144 lines
3.0 KiB
Rust
144 lines
3.0 KiB
Rust
use clap::{Parser, Subcommand};
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct Cli {
|
|
#[command(
|
|
subcommand,
|
|
help = "to manage Noxis work",
|
|
)]
|
|
command : Commands,
|
|
}
|
|
#[derive(Debug, Subcommand)]
|
|
pub enum Commands {
|
|
#[command(
|
|
about = "To get info about current Noxis status",
|
|
)]
|
|
Status,
|
|
#[command(
|
|
about = "To start Noxis process",
|
|
)]
|
|
Start(StartAction),
|
|
#[command(
|
|
about = "To stop Noxis process",
|
|
)]
|
|
Stop,
|
|
#[command(
|
|
about = "To restart Noxis process",
|
|
)]
|
|
Restart(StartAction),
|
|
#[command(
|
|
about = "To get list of processes that are being monitoring",
|
|
)]
|
|
Processes,
|
|
// process command
|
|
#[command(
|
|
about = "To manage current process that is being monitoring",
|
|
)]
|
|
Process(ProcessCommand),
|
|
// config command =
|
|
#[command(
|
|
about = "To manage config settings",
|
|
)]
|
|
Config(ConfigCommand),
|
|
}
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct StartAction {
|
|
#[arg(
|
|
long="with-flags",
|
|
num_args = 1..,
|
|
value_delimiter = ' '
|
|
)]
|
|
flags : Vec<String>,
|
|
}
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct ConfigCommand {
|
|
#[command(subcommand)]
|
|
action : ConfigAction,
|
|
}
|
|
|
|
#[derive(Debug, Subcommand)]
|
|
pub enum ConfigAction {
|
|
#[command(
|
|
about = "To change current Noxis configuration",
|
|
)]
|
|
Local(LocalConfig),
|
|
#[command(
|
|
about = "To change credentials of the remote config server",
|
|
)]
|
|
Remote,
|
|
#[command(
|
|
about = "To reset all config settings",
|
|
)]
|
|
Reset,
|
|
}
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct LocalConfig {
|
|
// flag
|
|
#[arg(
|
|
long = "json",
|
|
action,
|
|
help = "to read following input as JSON",
|
|
)]
|
|
is_json : bool,
|
|
// value
|
|
#[arg(
|
|
help = "path to config file or config String (with --json flag)",
|
|
)]
|
|
config : String,
|
|
}
|
|
|
|
#[derive(Debug, Parser)]
|
|
pub struct ProcessCommand {
|
|
#[arg(
|
|
help = "name of needed process",
|
|
)]
|
|
process : String,
|
|
#[command(
|
|
subcommand,
|
|
help = "To get current process's status",
|
|
)]
|
|
action : ProcessAction,
|
|
}
|
|
|
|
#[derive(Debug, Subcommand)]
|
|
enum ProcessAction {
|
|
#[command(
|
|
about = "To get info about current process status",
|
|
)]
|
|
Status,
|
|
#[command(
|
|
about = "To start current process",
|
|
)]
|
|
Start,
|
|
#[command(
|
|
about = "To stop current process",
|
|
)]
|
|
Stop,
|
|
#[command(
|
|
about = "To freeze (hybernaze) current process",
|
|
)]
|
|
Freeze,
|
|
#[command(
|
|
about = "To unfreeze (unhybernaze) current process",
|
|
)]
|
|
Unfreeze,
|
|
#[command(
|
|
about = "To restart current process",
|
|
)]
|
|
Restart,
|
|
#[command(
|
|
about = "To get info about current process's dependencies",
|
|
)]
|
|
Deps,
|
|
#[command(
|
|
about = "To get info about current process's files-dependencies",
|
|
)]
|
|
Files,
|
|
#[command(
|
|
about = "To get info about current process's services-dependencies",
|
|
)]
|
|
Services,
|
|
} |