refactor: move account handling and completion functions to general cli handler
This commit is contained in:
parent
8936d19c39
commit
11ccdb54c7
@ -1,10 +1,10 @@
|
|||||||
use clap::{builder::PossibleValue, Arg, ArgMatches, Command};
|
use clap::{builder::PossibleValue, Arg, Command};
|
||||||
use clap_complete::{generate, Shell};
|
use detee_cli::general::cli_handler::{
|
||||||
use detee_cli::general::cli_handler::{handle_operators, handle_packagers};
|
handle_account, handle_completion, handle_operators, handle_packagers,
|
||||||
|
};
|
||||||
use detee_cli::sgx::cli_handler::handle_app;
|
use detee_cli::sgx::cli_handler::handle_app;
|
||||||
use detee_cli::snp::cli_handler::{handle_vm, handle_vm_nodes};
|
use detee_cli::snp::cli_handler::{handle_vm, handle_vm_nodes};
|
||||||
use detee_cli::*;
|
use detee_cli::*;
|
||||||
use std::io;
|
|
||||||
|
|
||||||
const ABOUT: &str = r#"The DeTEE CLI allows you to manage and deploy applications and virtual machines.
|
const ABOUT: &str = r#"The DeTEE CLI allows you to manage and deploy applications and virtual machines.
|
||||||
All software runs within Trusted Execution Environments on a distributed network.
|
All software runs within Trusted Execution Environments on a distributed network.
|
||||||
@ -572,48 +572,3 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn disable_help_for_all_subcommands(mut cmd: Command) -> Command {
|
|
||||||
cmd = cmd.disable_help_subcommand(true);
|
|
||||||
let subcommands: Vec<_> = cmd
|
|
||||||
.get_subcommands_mut()
|
|
||||||
.map(|sub| disable_help_for_all_subcommands(sub.clone()))
|
|
||||||
.collect();
|
|
||||||
for sub in subcommands {
|
|
||||||
cmd = cmd.subcommand(sub);
|
|
||||||
}
|
|
||||||
cmd
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_completion(matches: &ArgMatches, cmd: Command) {
|
|
||||||
let mut cmd = disable_help_for_all_subcommands(cmd);
|
|
||||||
if let Some(shell) = matches.get_one::<String>("shell") {
|
|
||||||
let shell: Shell = shell.parse().expect("Invalid shell type");
|
|
||||||
generate(shell, &mut cmd, "detee-cli", &mut io::stdout());
|
|
||||||
if shell.to_string() == "fish" {
|
|
||||||
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm delete' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
|
||||||
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm update' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
|
||||||
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm inspect' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
|
||||||
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm ssh' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_account(matches: &ArgMatches) {
|
|
||||||
match matches.subcommand() {
|
|
||||||
Some(("show", _)) => cli_print(Ok(config::Config::get_account_data())),
|
|
||||||
Some(("sign", path_subcommand)) => {
|
|
||||||
let path: String = path_subcommand.get_one::<String>("path").unwrap().clone();
|
|
||||||
config::Config::init_config().sign_file(&path);
|
|
||||||
}
|
|
||||||
Some(("ssh-pubkey-path", path_subcommand)) => {
|
|
||||||
let path: String = path_subcommand.get_one::<String>("path").unwrap().clone();
|
|
||||||
config::Config::set_ssh_pubkey_path(&path);
|
|
||||||
}
|
|
||||||
Some(("brain-url", path_subcommand)) => {
|
|
||||||
let url: String = path_subcommand.get_one::<String>("url").unwrap().clone();
|
|
||||||
config::Config::set_brain_url(&url);
|
|
||||||
}
|
|
||||||
_ => cli_print(Ok(config::Config::get_account_data())),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -2,7 +2,10 @@ use super::operators;
|
|||||||
use super::packagers;
|
use super::packagers;
|
||||||
use crate::{cli_print, config};
|
use crate::{cli_print, config};
|
||||||
use clap::ArgMatches;
|
use clap::ArgMatches;
|
||||||
|
use clap::Command;
|
||||||
|
use clap_complete::{generate, Shell};
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
use std::io;
|
||||||
|
|
||||||
pub fn handle_operators(matches: &ArgMatches) {
|
pub fn handle_operators(matches: &ArgMatches) {
|
||||||
match matches.subcommand() {
|
match matches.subcommand() {
|
||||||
@ -40,3 +43,48 @@ pub fn handle_operators(matches: &ArgMatches) {
|
|||||||
pub fn handle_packagers(_matches: &ArgMatches) -> Result<Vec<packagers::Packager>, Box<dyn Error>> {
|
pub fn handle_packagers(_matches: &ArgMatches) -> Result<Vec<packagers::Packager>, Box<dyn Error>> {
|
||||||
Ok(packagers::get_packagers())
|
Ok(packagers::get_packagers())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn handle_account(matches: &ArgMatches) {
|
||||||
|
match matches.subcommand() {
|
||||||
|
Some(("show", _)) => cli_print(Ok(config::Config::get_account_data())),
|
||||||
|
Some(("sign", path_subcommand)) => {
|
||||||
|
let path: String = path_subcommand.get_one::<String>("path").unwrap().clone();
|
||||||
|
config::Config::init_config().sign_file(&path);
|
||||||
|
}
|
||||||
|
Some(("ssh-pubkey-path", path_subcommand)) => {
|
||||||
|
let path: String = path_subcommand.get_one::<String>("path").unwrap().clone();
|
||||||
|
config::Config::set_ssh_pubkey_path(&path);
|
||||||
|
}
|
||||||
|
Some(("brain-url", path_subcommand)) => {
|
||||||
|
let url: String = path_subcommand.get_one::<String>("url").unwrap().clone();
|
||||||
|
config::Config::set_brain_url(&url);
|
||||||
|
}
|
||||||
|
_ => cli_print(Ok(config::Config::get_account_data())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_completion(matches: &ArgMatches, cmd: Command) {
|
||||||
|
let mut cmd = disable_help_for_all_subcommands(cmd);
|
||||||
|
if let Some(shell) = matches.get_one::<String>("shell") {
|
||||||
|
let shell: Shell = shell.parse().expect("Invalid shell type");
|
||||||
|
generate(shell, &mut cmd, "detee-cli", &mut io::stdout());
|
||||||
|
if shell.to_string() == "fish" {
|
||||||
|
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm delete' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
||||||
|
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm update' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
||||||
|
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm inspect' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
||||||
|
println!("complete -c detee-cli -n '__fish_seen_subcommand_from vm ssh' -a '(cat ~/.detee/cli/vms/uuid_list)' -f");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn disable_help_for_all_subcommands(mut cmd: Command) -> Command {
|
||||||
|
cmd = cmd.disable_help_subcommand(true);
|
||||||
|
let subcommands: Vec<_> = cmd
|
||||||
|
.get_subcommands_mut()
|
||||||
|
.map(|sub| disable_help_for_all_subcommands(sub.clone()))
|
||||||
|
.collect();
|
||||||
|
for sub in subcommands {
|
||||||
|
cmd = cmd.subcommand(sub);
|
||||||
|
}
|
||||||
|
cmd
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user