From 1b369532750558fee29fc601dcfeea2cc0ad4f69 Mon Sep 17 00:00:00 2001 From: Sebastian Moser Date: Fri, 30 Aug 2024 08:59:30 +0200 Subject: [PATCH] moved all cli commands into one file --- src/platform/os/cli.rs | 142 ++++++++++++++++++++++++++++++ src/platform/os/cli/call.rs | 6 -- src/platform/os/cli/create.rs | 23 ----- src/platform/os/cli/get.rs | 35 -------- src/platform/os/cli/is_running.rs | 27 ------ src/platform/os/cli/mount.rs | 6 -- src/platform/os/cli/run.rs | 74 ---------------- src/platform/os/cli/set.rs | 26 ------ src/platform/os/cli/show.rs | 29 ------ src/platform/os/cli/stop.rs | 6 -- src/platform/os/main.rs | 31 ++----- 11 files changed, 150 insertions(+), 255 deletions(-) create mode 100644 src/platform/os/cli.rs delete mode 100644 src/platform/os/cli/call.rs delete mode 100644 src/platform/os/cli/create.rs delete mode 100644 src/platform/os/cli/get.rs delete mode 100644 src/platform/os/cli/is_running.rs delete mode 100644 src/platform/os/cli/mount.rs delete mode 100644 src/platform/os/cli/run.rs delete mode 100644 src/platform/os/cli/set.rs delete mode 100644 src/platform/os/cli/show.rs delete mode 100644 src/platform/os/cli/stop.rs diff --git a/src/platform/os/cli.rs b/src/platform/os/cli.rs new file mode 100644 index 0000000..b1d86ff --- /dev/null +++ b/src/platform/os/cli.rs @@ -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::("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::("id") + .ok_or(MizeError::new().msg("No id Argument specified"))?; + + let value = sub_matches.get_one::("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::("id") + .ok_or(MizeError::new().msg("No id Argument specified"))?; + + let item = instance.get(id)?; + + let (tx, rx) = bounded::(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(()) +} + + + + + diff --git a/src/platform/os/cli/call.rs b/src/platform/os/cli/call.rs deleted file mode 100644 index 16b29e4..0000000 --- a/src/platform/os/cli/call.rs +++ /dev/null @@ -1,6 +0,0 @@ -use clap::ArgMatches; -use mize::error::MizeResult; - -pub fn call(sub_matches: &ArgMatches) -> MizeResult<()> { - Ok(()) -} diff --git a/src/platform/os/cli/create.rs b/src/platform/os/cli/create.rs deleted file mode 100644 index fc5a74e..0000000 --- a/src/platform/os/cli/create.rs +++ /dev/null @@ -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(()); -} - diff --git a/src/platform/os/cli/get.rs b/src/platform/os/cli/get.rs deleted file mode 100644 index f43d00a..0000000 --- a/src/platform/os/cli/get.rs +++ /dev/null @@ -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::("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(()); -} - diff --git a/src/platform/os/cli/is_running.rs b/src/platform/os/cli/is_running.rs deleted file mode 100644 index 6d54999..0000000 --- a/src/platform/os/cli/is_running.rs +++ /dev/null @@ -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(()) - -} - diff --git a/src/platform/os/cli/mount.rs b/src/platform/os/cli/mount.rs deleted file mode 100644 index ea980e7..0000000 --- a/src/platform/os/cli/mount.rs +++ /dev/null @@ -1,6 +0,0 @@ -use clap::ArgMatches; -use mize::error::MizeResult; - -pub fn mount(sub_matches: &ArgMatches) -> MizeResult<()> { - Ok(()) -} diff --git a/src/platform/os/cli/run.rs b/src/platform/os/cli/run.rs deleted file mode 100644 index 3c08f13..0000000 --- a/src/platform/os/cli/run.rs +++ /dev/null @@ -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::("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(()); -} diff --git a/src/platform/os/cli/set.rs b/src/platform/os/cli/set.rs deleted file mode 100644 index 209fcb2..0000000 --- a/src/platform/os/cli/set.rs +++ /dev/null @@ -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::("id") - .ok_or(MizeError::new().msg("No id Argument specified"))?; - - let value = sub_matches.get_one::("value") - .ok_or(MizeError::new().msg("No value Argument specified"))?; - - instance.set_blocking(id, value.into_item_data())?; - - Ok(()) -} diff --git a/src/platform/os/cli/show.rs b/src/platform/os/cli/show.rs deleted file mode 100644 index 0a9e161..0000000 --- a/src/platform/os/cli/show.rs +++ /dev/null @@ -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::("id") - .ok_or(MizeError::new().msg("No id Argument specified"))?; - - let item = instance.get(id)?; - - let (tx, rx) = bounded::(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(()) -} diff --git a/src/platform/os/cli/stop.rs b/src/platform/os/cli/stop.rs deleted file mode 100644 index c3a7ece..0000000 --- a/src/platform/os/cli/stop.rs +++ /dev/null @@ -1,6 +0,0 @@ -use clap::ArgMatches; -use mize::error::MizeResult; - -pub fn stop(sub_matches: &ArgMatches) -> MizeResult<()> { - Ok(()) -} diff --git a/src/platform/os/main.rs b/src/platform/os/main.rs index 240a20c..cdd7c78 100644 --- a/src/platform/os/main.rs +++ b/src/platform/os/main.rs @@ -20,29 +20,7 @@ use crate::logging::init_logger; use tracing::{trace, debug, info, warn, error}; -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 cli; mod logging; static APPNAME: &str = "mize"; @@ -85,6 +63,9 @@ fn main() { // mi create Some(("create", sub_matches)) => cli::create(sub_matches), + // mi gui + Some(("gui", sub_matches)) => cli::gui(sub_matches), + // 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))), @@ -183,6 +164,10 @@ fn cli_matches() -> clap::ArgMatches { Command::new("is-running") .aliases(["isr"]) ) + .subcommand( + Command::new("gui") + .aliases(["g"]) + ) .arg_required_else_help(true); return main.get_matches();