1use clap::{Parser, Subcommand};
4
5#[derive(Parser, Debug)]
6#[command(name = "zinit")]
7#[command(author = "ThreeFold Tech")]
8#[command(version)]
9#[command(about = "Zinit process supervisor client", long_about = None)]
10pub struct Args {
11 #[arg(short, long, default_value = "127.0.0.1:9123")]
13 pub server: String,
14
15 #[arg(short = 'i', long = "stdin")]
17 pub stdin: bool,
18
19 #[arg(short = 'c', long = "command")]
21 pub inline_script: Option<String>,
22
23 #[command(subcommand)]
24 pub command: Option<Command>,
25
26 #[arg(value_name = "SCRIPT")]
28 pub script: Option<String>,
29}
30
31#[derive(Subcommand, Debug)]
32pub enum Command {
33 Server {
35 #[command(subcommand)]
36 action: ServerAction,
37 },
38
39 List,
41
42 Status {
44 name: String,
46 },
47
48 Start {
50 name: String,
52 },
53
54 Stop {
56 name: String,
58 },
59
60 Restart {
62 name: String,
64 },
65
66 Delete {
68 name: String,
70 },
71
72 Kill {
74 name: String,
76 #[arg(default_value = "SIGTERM")]
78 signal: String,
79 },
80
81 Stats {
83 name: String,
85 },
86
87 Logs {
89 service: Option<String>,
91 #[arg(short, long)]
93 follow: bool,
94 #[arg(short = 'n', long, default_value = "50")]
96 lines: u32,
97 },
98
99 Repl,
101
102 Tui,
104
105 Ping,
107}
108
109#[derive(Subcommand, Debug)]
110pub enum ServerAction {
111 Start {
113 #[arg(short = 'b', long)]
115 background: bool,
116 #[arg(short, long)]
118 port: Option<u16>,
119 },
120 Stop,
122 Restart,
124}