#[derive(Debug, StructOpt)]
pub struct Named {
#[structopt()]
pub name: String,
#[structopt(flatten)]
pub copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct DebugOpt {
#[structopt(short = "d", long = "debug", env = "KANIDM_DEBUG")]
pub debug: bool,
}
#[derive(Debug, StructOpt)]
pub struct CommonOpt {
#[structopt(short = "d", long = "debug", env = "KANIDM_DEBUG")]
pub debug: bool,
#[structopt(short = "H", long = "url", env = "KANIDM_URL")]
pub addr: Option<String>,
#[structopt(short = "D", long = "name", env = "KANIDM_NAME")]
pub username: Option<String>,
#[structopt(parse(from_os_str), short = "C", long = "ca", env = "KANIDM_CA_PATH")]
pub ca_path: Option<PathBuf>,
}
#[derive(Debug, StructOpt)]
pub struct GroupNamedMembers {
#[structopt()]
name: String,
#[structopt()]
members: Vec<String>,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct GroupPosixOpt {
#[structopt()]
name: String,
#[structopt(long = "gidnumber")]
gidnumber: Option<u32>,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub enum GroupPosix {
#[structopt(name = "show")]
Show(Named),
#[structopt(name = "set")]
Set(GroupPosixOpt),
}
#[derive(Debug, StructOpt)]
pub enum GroupOpt {
#[structopt(name = "list")]
List(CommonOpt),
#[structopt(name = "get")]
Get(Named),
#[structopt(name = "create")]
Create(Named),
#[structopt(name = "delete")]
Delete(Named),
#[structopt(name = "list_members")]
ListMembers(Named),
#[structopt(name = "set_members")]
SetMembers(GroupNamedMembers),
#[structopt(name = "purge_members")]
PurgeMembers(Named),
#[structopt(name = "add_members")]
AddMembers(GroupNamedMembers),
#[structopt(name = "remove_members")]
RemoveMembers(GroupNamedMembers),
#[structopt(name = "posix")]
Posix(GroupPosix),
}
#[derive(Debug, StructOpt)]
pub struct AccountCommonOpt {
#[structopt()]
account_id: String,
}
#[derive(Debug, StructOpt)]
pub struct AccountCredentialSet {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct AccountNamedOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct AccountNamedExpireDateTimeOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
#[structopt(name = "datetime")]
datetime: String,
}
#[derive(Debug, StructOpt)]
pub struct AccountNamedValidDateTimeOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
#[structopt(name = "datetime")]
datetime: String,
}
#[derive(Debug, StructOpt)]
pub struct AccountNamedTagOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
#[structopt(name = "tag")]
tag: String,
}
#[derive(Debug, StructOpt)]
pub struct AccountNamedTagPkOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(flatten)]
copt: CommonOpt,
#[structopt(name = "tag")]
tag: String,
#[structopt(name = "pubkey")]
pubkey: String,
}
#[derive(Debug, StructOpt)]
pub struct AccountCreateOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(name = "display_name")]
display_name: String,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub enum AccountCredential {
#[structopt(name = "set_password")]
SetPassword(AccountCredentialSet),
#[structopt(name = "register_webauthn")]
RegisterWebauthn(AccountNamedTagOpt),
#[structopt(name = "remove_webauthn")]
RemoveWebauthn(AccountNamedTagOpt),
#[structopt(name = "register_totp")]
RegisterTotp(AccountNamedOpt),
#[structopt(name = "remove_totp")]
RemoveTotp(AccountNamedOpt),
#[structopt(name = "status")]
Status(AccountNamedOpt),
#[structopt(name = "reset_credential")]
GeneratePassword(AccountCredentialSet),
#[structopt(name = "generate_backup_codes")]
BackupCodeGenerate(AccountNamedOpt),
#[structopt(name = "remove_backup_codes")]
BackupCodeRemove(AccountNamedOpt),
}
#[derive(Debug, StructOpt)]
pub enum AccountRadius {
#[structopt(name = "show_secret")]
Show(AccountNamedOpt),
#[structopt(name = "generate_secret")]
Generate(AccountNamedOpt),
#[structopt(name = "delete_secret")]
Delete(AccountNamedOpt),
}
#[derive(Debug, StructOpt)]
pub struct AccountPosixOpt {
#[structopt(flatten)]
aopts: AccountCommonOpt,
#[structopt(long = "gidnumber")]
gidnumber: Option<u32>,
#[structopt(long = "shell")]
shell: Option<String>,
#[structopt(flatten)]
copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub enum AccountPosix {
#[structopt(name = "show")]
Show(AccountNamedOpt),
#[structopt(name = "set")]
Set(AccountPosixOpt),
#[structopt(name = "set_password")]
SetPassword(AccountNamedOpt),
}
#[derive(Debug, StructOpt)]
pub enum AccountSsh {
#[structopt(name = "list_publickeys")]
List(AccountNamedOpt),
#[structopt(name = "add_publickey")]
Add(AccountNamedTagPkOpt),
#[structopt(name = "delete_publickey")]
Delete(AccountNamedTagOpt),
}
#[derive(Debug, StructOpt)]
pub enum AccountValidity {
#[structopt(name = "show")]
Show(AccountNamedOpt),
#[structopt(name = "expire_at")]
ExpireAt(AccountNamedExpireDateTimeOpt),
#[structopt(name = "begin_from")]
BeginFrom(AccountNamedValidDateTimeOpt),
}
#[derive(Debug, StructOpt)]
pub enum AccountOpt {
#[structopt(name = "credential")]
Credential(AccountCredential),
#[structopt(name = "radius")]
Radius(AccountRadius),
#[structopt(name = "posix")]
Posix(AccountPosix),
#[structopt(name = "ssh")]
Ssh(AccountSsh),
#[structopt(name = "list")]
List(CommonOpt),
#[structopt(name = "get")]
Get(AccountNamedOpt),
#[structopt(name = "create")]
Create(AccountCreateOpt),
#[structopt(name = "delete")]
Delete(AccountNamedOpt),
#[structopt(name = "validity")]
Validity(AccountValidity),
}
#[derive(Debug, StructOpt)]
pub enum RecycleOpt {
#[structopt(name = "list")]
List(CommonOpt),
#[structopt(name = "get")]
Get(Named),
#[structopt(name = "revive")]
Revive(Named),
}
#[derive(Debug, StructOpt)]
pub struct LoginOpt {
#[structopt(flatten)]
pub copt: CommonOpt,
#[structopt(short = "w", long = "webauthn")]
pub webauthn: bool,
}
#[derive(Debug, StructOpt)]
pub struct LogoutOpt {
#[structopt(flatten)]
pub copt: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub enum SessionOpt {
#[structopt(name = "list")]
List(DebugOpt),
#[structopt(name = "cleanup")]
Cleanup(DebugOpt),
}
#[derive(Debug, StructOpt)]
pub struct FilterOpt {
#[structopt()]
filter: String,
#[structopt(flatten)]
commonopts: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct CreateOpt {
#[structopt(parse(from_os_str))]
file: PathBuf,
#[structopt(flatten)]
commonopts: CommonOpt,
}
#[derive(Debug, StructOpt)]
pub struct ModifyOpt {
#[structopt(flatten)]
commonopts: CommonOpt,
#[structopt()]
filter: String,
#[structopt(parse(from_os_str))]
file: PathBuf,
}
#[derive(Debug, StructOpt)]
pub enum RawOpt {
#[structopt(name = "search")]
Search(FilterOpt),
#[structopt(name = "create")]
Create(CreateOpt),
#[structopt(name = "modify")]
Modify(ModifyOpt),
#[structopt(name = "delete")]
Delete(FilterOpt),
}
#[derive(Debug, StructOpt)]
pub enum SelfOpt {
#[structopt(name = "whoami")]
Whoami(CommonOpt),
#[structopt(name = "set_password")]
SetPassword(CommonOpt),
}
#[derive(Debug, StructOpt)]
pub struct Oauth2BasicCreateOpt {
#[structopt(name = "origin")]
origin: String,
#[structopt(flatten)]
nopt: Named,
}
#[derive(Debug, StructOpt)]
pub enum Oauth2Opt {
#[structopt(name = "list")]
List(CommonOpt),
#[structopt(name = "get")]
Get(Named),
#[structopt(name = "create")]
CreateBasic(Oauth2BasicCreateOpt),
#[structopt(name = "delete")]
Delete(Named),
}
#[derive(Debug, StructOpt)]
pub enum SystemOpt {
#[structopt(name = "oauth2")]
Oauth2(Oauth2Opt),
}
#[derive(Debug, StructOpt)]
#[structopt(about = "Kanidm Client Utility")]
pub enum KanidmClientOpt {
#[structopt(name = "login")]
Login(LoginOpt),
#[structopt(name = "logout")]
Logout(LogoutOpt),
#[structopt(name = "session")]
Session(SessionOpt),
#[structopt(name = "self")]
CSelf(SelfOpt),
#[structopt(name = "account")]
Account(AccountOpt),
#[structopt(name = "group")]
Group(GroupOpt),
#[structopt(name = "system")]
System(SystemOpt),
#[structopt(name = "recycle_bin")]
Recycle(RecycleOpt),
#[structopt(name = "raw")]
Raw(RawOpt),
}