From 48548f21f63d1234cab10dbc3a919d454b5785d6 Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 04:48:45 +0100 Subject: Fix local dev lsp --- shell.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index d484ed5..fa924d8 100644 --- a/shell.nix +++ b/shell.nix @@ -4,7 +4,8 @@ pkgs.mkShell { buildInputs = with pkgs; [ - rustup + rustc + cargo pkg-config rust-analyzer gcc -- cgit v1.2.3 From 5b64295b480f8c8fe5b2584a9b7f94674655183c Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 04:50:06 +0100 Subject: Sync Cargo lock --- Cargo.lock | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 42405ad..d21db34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,22 +85,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys", -] - [[package]] name = "init" version = "0.1.0" dependencies = [ - "errno", "libc", + "liblmod", ] [[package]] @@ -115,6 +105,12 @@ version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +[[package]] +name = "liblmod" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b221585d3f0053b5b80768e115b50edcd5c423b703a9c2c5cbf4bcf417ab227c" + [[package]] name = "once_cell_polyfill" version = "1.70.2" -- cgit v1.2.3 From 2ed528ef4f9ea35d7cfbd1b46a5d3c5036fcc409 Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 04:50:51 +0100 Subject: Cli skeleton, basic enums --- vegilctl/src/main.rs | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/vegilctl/src/main.rs b/vegilctl/src/main.rs index e7a11a9..cbfc2f2 100644 --- a/vegilctl/src/main.rs +++ b/vegilctl/src/main.rs @@ -1,3 +1,37 @@ +#[derive(Debug)] +enum Command { + Status, + Stop, + Start, + Enable, + Disable, +} +struct CliArgs { + command: Command, + target: String +} fn main() { - println!("Hello, world!"); + let command:Command = match std::env::args().nth(1).as_deref(){ + Some("status") => Command::Status, + Some("start") => Command::Start, + Some("stop") => Command::Stop, + Some("enable") => Command::Enable, + Some("disable") => Command::Disable, + Some(cmd) => { + eprintln!("invalid command arg:{}", cmd); + std::process::exit(1); + } + None => { + eprintln!("Invalid input: No command arg specified\nRun with --help to get help"); + std::process::exit(1); + } + }; + let target = std::env::args().nth(2).expect("no target arg specified"); + + let args = CliArgs { + command, + target + }; + + println!("command: {:?}, target: {:?}", args.command, args.target); } -- cgit v1.2.3 From 6ae757c54fac833e715c05e201b389e605af65ab Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 04:51:27 +0100 Subject: Create args_dispatcher --- vegilctl/src/args_dispatcher.rs | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 vegilctl/src/args_dispatcher.rs diff --git a/vegilctl/src/args_dispatcher.rs b/vegilctl/src/args_dispatcher.rs new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3 From d0e41b5cd807f5ec0fe5c64b0879d986c4bc3bce Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 06:32:35 +0100 Subject: Update resolver; Move License; Specify Rust Edition --- Cargo.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 2ccb4e1..8c9be6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,9 @@ [workspace] members = ["init", "vegilctl"] +resolver = "3" + +[workspace.package] +edition = "2024" license = "GPL-2.0-only" [profile.release] -- cgit v1.2.3 From 61e185c63e435d9ce679821678617a87e7dd4104 Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 06:44:51 +0100 Subject: Sync Cargo Lock --- Cargo.lock | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index d21db34..958566a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,6 +59,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", + "clap_derive", ] [[package]] @@ -73,6 +74,18 @@ dependencies = [ "strsim", ] +[[package]] +name = "clap_derive" +version = "4.5.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "clap_lex" version = "0.7.6" @@ -85,6 +98,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "init" version = "0.1.0" @@ -117,12 +136,47 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + [[package]] name = "utf8parse" version = "0.2.2" -- cgit v1.2.3 From 0b7e289f2287bc25e8b619b2fda2cef26373a5c9 Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 06:45:23 +0100 Subject: Specify clap features --- vegilctl/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vegilctl/Cargo.toml b/vegilctl/Cargo.toml index 73077a8..0a89458 100644 --- a/vegilctl/Cargo.toml +++ b/vegilctl/Cargo.toml @@ -5,4 +5,4 @@ edition = "2024" description = "Vegil init user control." [dependencies] -clap = "4.5.53" +clap = { version = "4.5.53", features = [ "derive"]} -- cgit v1.2.3 From a10ceac5a5ff6de2c85757384e97c273a3038f6c Mon Sep 17 00:00:00 2001 From: tuturuu Date: Sat, 10 Jan 2026 06:46:29 +0100 Subject: Implement Basic CLI skeleton Parse generic commands and subcommands (args) using clap; Write Basic Commands enum docs to show after --help flag. --- vegilctl/src/main.rs | 63 +++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/vegilctl/src/main.rs b/vegilctl/src/main.rs index cbfc2f2..08ff37c 100644 --- a/vegilctl/src/main.rs +++ b/vegilctl/src/main.rs @@ -1,37 +1,40 @@ -#[derive(Debug)] +use clap::{Parser, Subcommand}; + +#[derive(Subcommand, Clone,Debug)] enum Command { - Status, - Stop, - Start, - Enable, - Disable, + /// Check Service Status + Status { of: String }, + /// Stop Specified Service + Stop { service: String }, + /// Start Specified Service + Start { service: String }, + /// Start Service after system initialization (Add Service symlink to Vigil service startup + /// list) + Enable { service: String }, + /// Remove Service From Service initialization list + Disable { service: String }, + /// Power Management Commands + #[command(subcommand)] + Power(PowerCommand) +} +#[derive(Subcommand, Clone, Debug)] +enum PowerCommand { + /// Reboot System + Reboot, + /// Poweroff System + Poweroff, + /// Halt + Halt } -struct CliArgs { +#[derive(Parser)] +#[command(name = "vigilctl")] +#[command(about = "Vigil control manager")] +struct Cli { + #[command(subcommand)] command: Command, - target: String } fn main() { - let command:Command = match std::env::args().nth(1).as_deref(){ - Some("status") => Command::Status, - Some("start") => Command::Start, - Some("stop") => Command::Stop, - Some("enable") => Command::Enable, - Some("disable") => Command::Disable, - Some(cmd) => { - eprintln!("invalid command arg:{}", cmd); - std::process::exit(1); - } - None => { - eprintln!("Invalid input: No command arg specified\nRun with --help to get help"); - std::process::exit(1); - } - }; - let target = std::env::args().nth(2).expect("no target arg specified"); - - let args = CliArgs { - command, - target - }; + let args = Cli::parse(); - println!("command: {:?}, target: {:?}", args.command, args.target); + println!("command: {:?}", args.command); } -- cgit v1.2.3