aboutsummaryrefslogtreecommitdiff
path: root/mling/src/cli/refresh.rs
blob: 368670ef5fbbd242848cc7cef0e122160db724af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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(())
}