moved all cli commands into one file
This commit is contained in:
142
src/platform/os/cli.rs
Normal file
142
src/platform/os/cli.rs
Normal 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(())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
use clap::ArgMatches;
|
|
||||||
use mize::error::MizeResult;
|
|
||||||
|
|
||||||
pub fn call(sub_matches: &ArgMatches) -> MizeResult<()> {
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
@@ -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(());
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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(());
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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(())
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
use clap::ArgMatches;
|
|
||||||
use mize::error::MizeResult;
|
|
||||||
|
|
||||||
pub fn mount(sub_matches: &ArgMatches) -> MizeResult<()> {
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
@@ -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(());
|
|
||||||
}
|
|
||||||
@@ -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(())
|
|
||||||
}
|
|
||||||
@@ -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(())
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
use clap::ArgMatches;
|
|
||||||
use mize::error::MizeResult;
|
|
||||||
|
|
||||||
pub fn stop(sub_matches: &ArgMatches) -> MizeResult<()> {
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user