moved all cli commands into one file

This commit is contained in:
Sebastian Moser
2024-08-30 08:59:30 +02:00
parent 5cfc9cfe7c
commit 1b36953275
11 changed files with 150 additions and 255 deletions

142
src/platform/os/cli.rs Normal file
View File

@@ -0,0 +1,142 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use mize::error::{IntoMizeResult, MizeError, MizeResult, MizeResultTrait};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
use mize::instance::subscription::Update;
use mize::platform::os::fsstore::FileStore;
use mize::instance::subscription::Subscription;
use mize::item::IntoItemData;
pub fn get(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let item = instance.get(id)?;
let recurse_count = sub_matches.get_count("recurse");
println!("{}", item.as_data_full()?);
return Ok(());
if recurse_count > 0 {
println!("{}", item.id());
println!("{}", item.as_data_full()?);
} else {
println!("{}", item);
};
return Ok(());
}
pub fn call(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}
pub fn create(sub_matches: &ArgMatches) -> MizeResult<()> {
let mut instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let item = instance.new_item()?;
println!("id: {}", item.id());
println!("with namespace: {}", item.id().namespace().as_real_string());
return Ok(());
}
pub fn is_running(sub_matches: &ArgMatches) -> MizeResult<()> {
let home_dir = env!("HOME");
if FileStore::store_is_opened(home_dir.to_owned() + "/.mize")? {
println!("true");
} else {
println!("false");
}
Ok(())
}
pub fn mount(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}
pub fn run(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
instance.wait();
return Ok(());
}
pub fn set(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let value = sub_matches.get_one::<String>("value")
.ok_or(MizeError::new().msg("No value Argument specified"))?;
instance.set_blocking(id, value.into_item_data())?;
Ok(())
}
pub fn show(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let item = instance.get(id)?;
let (tx, rx) = bounded::<Update>(4);
let sub = Subscription::from_sender(tx);
instance.sub(id, sub)?;
println!("item: {}", item.as_data_full()?);
for update in rx {
println!("####### GOT UPDATE #######");
println!("item: {}", update.new_item()?.as_data_full()?);
}
Ok(())
}
pub fn stop(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}
pub fn gui(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
Ok(())
}

View File

@@ -1,6 +0,0 @@
use clap::ArgMatches;
use mize::error::MizeResult;
pub fn call(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}

View File

@@ -1,23 +0,0 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use mize::error::{IntoMizeResult, MizeError, MizeResult, MizeResultTrait};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
pub fn create(sub_matches: &ArgMatches) -> MizeResult<()> {
let mut instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let item = instance.new_item()?;
println!("id: {}", item.id());
println!("with namespace: {}", item.id().namespace().as_real_string());
return Ok(());
}

View File

@@ -1,35 +0,0 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use mize::error::{IntoMizeResult, MizeError, MizeResult, MizeResultTrait};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
pub fn get(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let item = instance.get(id)?;
let recurse_count = sub_matches.get_count("recurse");
println!("{}", item.as_data_full()?);
return Ok(());
if recurse_count > 0 {
println!("{}", item.id());
println!("{}", item.as_data_full()?);
} else {
println!("{}", item);
};
return Ok(());
}

View File

@@ -1,27 +0,0 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use mize::error::{IntoMizeResult, MizeError, MizeResult, MizeResultTrait};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
use mize::platform::os::fsstore::FileStore;
//use self::FileStore;
pub fn is_running(sub_matches: &ArgMatches) -> MizeResult<()> {
let home_dir = env!("HOME");
if FileStore::store_is_opened(home_dir.to_owned() + "/.mize")? {
println!("true");
} else {
println!("false");
}
Ok(())
}

View File

@@ -1,6 +0,0 @@
use clap::ArgMatches;
use mize::error::MizeResult;
pub fn mount(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}

View File

@@ -1,74 +0,0 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use std::fs::File;
use tracing::{trace, debug, info, warn, error};
use nix::sys::signal::{self, Signal};
use mize::error::{MizeResultTrait, IntoMizeResult, MizeError, MizeResult};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
pub fn run(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
instance.wait();
/*
let instance_path = match sub_matches.get_one::<String>("store") {
Some(a) => PathBuf::from(a),
None => {
let mut home_dir = home_dir()
.ok_or(MizeError::new().category("io").category("env").msg("could not get the home directory, where the mize store is by default")).critical();
home_dir.push(".mize");
home_dir
},
};
let instance = Instance::new(instance_path.clone()).await.critical();
info!("Opened Instance at \"{}\"", instance_path.clone().display());
match sub_matches.subcommand() {
// stop the daemon
Some(("stop", _)) => {
if instance.daemon_is_running().await.critical() {
//instance.stop_daemon();
println!("Todo")
} else {
warn!("Daemon is already not running.");
};
},
Some(("status", _)) => {
if instance.daemon_is_running().await.critical() {
eprintln!("Daemon is running");
} else {
eprintln!("Daemon is not running");
};
},
Some(("kill", _)) => {
signal::kill(instance.get_daemon_pid().await.critical(), Signal::SIGTERM).mize_result_msg("Could not kill daemon").critical();
},
Some((cmd, _)) => {
error!("Unknown Command: {}", cmd);
}
// just start the daemon
None => {
if !instance.daemon_is_running().await.critical() {
debug!("Daemon is not running. starting...");
instance.start_deamon().await.critical();
info!("Daemon Started");
};
},
}
*/
return Ok(());
}

View File

@@ -1,26 +0,0 @@
use std::path::PathBuf;
use clap::ArgMatches;
use home::home_dir;
use mize::error::{IntoMizeResult, MizeError, MizeResult, MizeResultTrait};
use mize::instance::Instance;
use mize::item::IntoItemData;
use mize::platform::os::config_from_cli_args;
pub fn set(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let value = sub_matches.get_one::<String>("value")
.ok_or(MizeError::new().msg("No value Argument specified"))?;
instance.set_blocking(id, value.into_item_data())?;
Ok(())
}

View File

@@ -1,29 +0,0 @@
use clap::ArgMatches;
use crossbeam::channel::{bounded, unbounded};
use mize::error::{MizeResult, MizeError};
use mize::instance::subscription::{Subscription, Update};
use mize::instance::Instance;
use mize::platform::os::config_from_cli_args;
pub fn show(sub_matches: &ArgMatches) -> MizeResult<()> {
let instance = Instance::with_config(config_from_cli_args(sub_matches)?)?;
let id = sub_matches.get_one::<String>("id")
.ok_or(MizeError::new().msg("No id Argument specified"))?;
let item = instance.get(id)?;
let (tx, rx) = bounded::<Update>(4);
let sub = Subscription::from_sender(tx);
instance.sub(id, sub)?;
println!("item: {}", item.as_data_full()?);
for update in rx {
println!("####### GOT UPDATE #######");
println!("item: {}", update.new_item()?.as_data_full()?);
}
Ok(())
}

View File

@@ -1,6 +0,0 @@
use clap::ArgMatches;
use mize::error::MizeResult;
pub fn stop(sub_matches: &ArgMatches) -> MizeResult<()> {
Ok(())
}

View File

@@ -20,29 +20,7 @@ use crate::logging::init_logger;
use tracing::{trace, debug, info, warn, error}; use tracing::{trace, debug, info, warn, error};
mod cli { mod cli;
pub mod run;
pub mod stop;
pub mod get;
pub mod set;
pub mod show;
pub mod mount;
pub mod call;
pub mod create;
pub mod is_running;
pub use run::run;
pub use stop::stop;
pub use get::get;
pub use set::set;
pub use show::show;
pub use create::create;
pub use mount::mount;
pub use call::call;
pub use is_running::is_running;
}
mod logging; mod logging;
static APPNAME: &str = "mize"; static APPNAME: &str = "mize";
@@ -85,6 +63,9 @@ fn main() {
// mi create // mi create
Some(("create", sub_matches)) => cli::create(sub_matches), Some(("create", sub_matches)) => cli::create(sub_matches),
// mi gui
Some(("gui", sub_matches)) => cli::gui(sub_matches),
// some unknown command passed // some unknown command passed
Some((cmd, sub_matches)) => Err(MizeError::new().msg(format!("The subcommand: {} is not known. use --help to list availavle commands", cmd))), Some((cmd, sub_matches)) => Err(MizeError::new().msg(format!("The subcommand: {} is not known. use --help to list availavle commands", cmd))),
@@ -183,6 +164,10 @@ fn cli_matches() -> clap::ArgMatches {
Command::new("is-running") Command::new("is-running")
.aliases(["isr"]) .aliases(["isr"])
) )
.subcommand(
Command::new("gui")
.aliases(["g"])
)
.arg_required_else_help(true); .arg_required_else_help(true);
return main.get_matches(); return main.get_matches();