1use clap::{Parser, ValueEnum};
2
3pub mod auth;
4pub mod gql;
5pub mod login;
6pub mod publish;
7pub mod router;
8pub mod workspace;
9
10#[derive(Parser, PartialEq, Clone, Debug, Default)]
11pub struct LoginCommand {
12 #[arg(long = "email", short = 'e', requires = "password", conflicts_with = "pat")]
14 pub email: Option<String>,
15
16 #[arg(long = "password", short = 'p', requires = "email", conflicts_with = "pat")]
18 pub password: Option<String>,
19
20 #[arg(long = "pat", conflicts_with_all = &["email", "password"])]
22 pub pat: Option<String>,
23}
24
25#[derive(Parser, PartialEq, Clone, Debug)]
26pub struct PublishRunbook {
27 #[arg(long = "manifest-file-path", short = 'm', default_value = "./txtx.yml")]
29 pub manifest_path: String,
30 pub runbook: String,
32 #[arg(long = "env")]
34 pub environment: Option<String>,
35 #[arg(long = "input")]
37 pub inputs: Vec<String>,
38 #[arg(long = "destination", short = 'd')]
40 pub destination: Option<String>,
41 #[arg(long = "read-permissions", default_value = "private")]
46 pub read_permissions: Option<PublishRunbookReadPermissions>,
47 #[arg(long = "update-permissions", default_value = "private")]
51 pub update_permissions: Option<PublishRunbookWritePermissions>,
52 #[arg(long = "delete-permissions", default_value = "private")]
56 pub delete_permissions: Option<PublishRunbookWritePermissions>,
57}
58
59#[derive(ValueEnum, PartialEq, Clone, Debug)]
60#[clap(rename_all = "snake-case")]
61pub enum PublishRunbookReadPermissions {
62 Public,
63 Private,
64 Org,
65}
66
67#[derive(ValueEnum, PartialEq, Clone, Debug)]
68#[clap(rename_all = "snake-case")]
69pub enum PublishRunbookWritePermissions {
70 Private,
71 Org,
72}