diff options
Diffstat (limited to 'mling/src/cli/refresh.rs')
| -rw-r--r-- | mling/src/cli/refresh.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/mling/src/cli/refresh.rs b/mling/src/cli/refresh.rs new file mode 100644 index 0000000..368670e --- /dev/null +++ b/mling/src/cli/refresh.rs @@ -0,0 +1,32 @@ +use mingling::{ + ShellContext, Suggest, + macros::{chain, completion, dispatcher, pack, suggest}, + parser::Picker, +}; + +use crate::{ThisProgram, project_installer::install_all}; + +dispatcher!("refresh", RefreshCommand => RefreshEntry); + +pack!(ResultRefreshCompleted = ()); + +#[completion(RefreshEntry)] +pub(crate) fn comp_refresh(ctx: &ShellContext) -> Suggest { + if ctx.typing_argument() { + return suggest! { + "--clean": "Clean build artifacts before installation", + "-c": "Clean build artifacts before installation", + }; + } + return suggest!(); +} + +#[chain] +pub(crate) fn handle_refresh_entry(prev: RefreshEntry) -> NextProcess { + let is_clean_before_build = Picker::new(prev.inner) + .pick::<bool>(["--clean", "-c"]) + .unpack(); + let _ = install_all(is_clean_before_build); + + ResultRefreshCompleted::new(()) +} |
