aboutsummaryrefslogtreecommitdiff
path: root/mling/src/cli
diff options
context:
space:
mode:
Diffstat (limited to 'mling/src/cli')
-rw-r--r--mling/src/cli/install.rs32
-rw-r--r--mling/src/cli/list.rs123
-rw-r--r--mling/src/cli/namespace_mgr.rs128
-rw-r--r--mling/src/cli/read.rs78
4 files changed, 0 insertions, 361 deletions
diff --git a/mling/src/cli/install.rs b/mling/src/cli/install.rs
deleted file mode 100644
index cca7483..0000000
--- a/mling/src/cli/install.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-use mingling::{
- ShellContext, Suggest,
- macros::{chain, completion, dispatcher, pack, suggest},
- parser::Picker,
-};
-
-use crate::{Next, project_installer::install_all};
-
-dispatcher!("install", InstallCommand => InstallEntry);
-
-pack!(ResultInstallCompleted = ());
-
-#[completion(InstallEntry)]
-pub(crate) fn comp_install(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_install_entry(prev: InstallEntry) -> Next {
- let is_clean_before_build = Picker::new(prev.inner)
- .pick::<bool>(["--clean", "-c"])
- .unpack();
- let _ = install_all(is_clean_before_build);
-
- ResultInstallCompleted::new(())
-}
diff --git a/mling/src/cli/list.rs b/mling/src/cli/list.rs
deleted file mode 100644
index a2a9434..0000000
--- a/mling/src/cli/list.rs
+++ /dev/null
@@ -1,123 +0,0 @@
-use colored::Colorize;
-use mingling::{
- Groupped, RenderResult, ShellContext, Suggest,
- macros::{chain, completion, dispatcher, pack, r_println, renderer, suggest},
- parser::Picker,
-};
-use serde::Serialize;
-
-use crate::{Next, namespace_manager::list_namespaces};
-
-dispatcher!("ls-namespace", ListInstalledCommand => ListInstalledEntry);
-
-#[completion(ListInstalledEntry)]
-pub(crate) fn comp_list_installed(ctx: &ShellContext) -> Suggest {
- if ctx.typing_argument() {
- return suggest! {
- "--trusted": "Show only trusted namespaces",
- "--untrusted": "Show only untrusted namespaces",
- };
- }
- return suggest!();
-}
-
-#[derive(Debug, Serialize, Default, Groupped)]
-pub(crate) enum StateListInstalledOptions {
- #[default]
- All,
- OnlyTrusted,
- OnlyUntrusted,
-}
-
-pack!(MutexErrorListInstalled = ());
-
-#[chain]
-pub(crate) fn handle_list_installed_entry(prev: ListInstalledEntry) -> Next {
- let picker = Picker::new(prev.inner);
- let r = picker
- .pick::<bool>("--trusted")
- .pick::<bool>("--untrusted")
- .unpack();
-
- let option: StateListInstalledOptions = match r {
- // (show_trusted, show_untrusted)
- (true, false) => StateListInstalledOptions::OnlyTrusted,
- (false, true) => StateListInstalledOptions::OnlyUntrusted,
- (false, false) => StateListInstalledOptions::All,
- (true, true) => return MutexErrorListInstalled::default().to_render(),
- };
-
- option.to_chain()
-}
-
-#[renderer]
-pub(crate) fn render_list_installed_mutex_error(_prev: MutexErrorListInstalled) {
- r_println!("Error: cannot use both --trusted and --untrusted options at the same time")
-}
-
-#[derive(Debug, Groupped, Serialize)]
-pub(crate) struct ResultInstalledNamespaces {
- trusted: Vec<String>,
- untrusted: Vec<String>,
- untagged: Vec<String>,
- option: StateListInstalledOptions,
-}
-
-#[chain]
-pub(crate) fn handle_state_list_installed_option(prev: StateListInstalledOptions) -> Next {
- ResultInstalledNamespaces {
- trusted: list_namespaces(true, false, false),
- untrusted: list_namespaces(false, true, false),
- untagged: list_namespaces(false, false, true),
- option: prev,
- }
-}
-
-#[renderer]
-pub(crate) fn render_installed(prev: ResultInstalledNamespaces) {
- match prev.option {
- StateListInstalledOptions::All => {
- print_list(
- &"Trusted".bright_green().bold().to_string(),
- &prev.trusted,
- __renderer_inner_result,
- );
- print_list(
- &"Untrusted".bright_red().bold().to_string(),
- &prev.untrusted,
- __renderer_inner_result,
- );
- print_list(
- &"Untagged".bright_black().bold().to_string(),
- &prev.untagged,
- __renderer_inner_result,
- );
- }
- StateListInstalledOptions::OnlyTrusted => {
- print_list(
- &"Trusted".bright_green().bold().to_string(),
- &prev.trusted,
- __renderer_inner_result,
- );
- }
- StateListInstalledOptions::OnlyUntrusted => {
- print_list(
- &"Untrusted".bright_red().bold().to_string(),
- &prev.untrusted,
- __renderer_inner_result,
- );
- }
- }
-}
-
-fn print_list(title: &str, list: &[String], __renderer_inner_result: &mut RenderResult) {
- if list.is_empty() {
- return;
- }
-
- r_println!("{title}");
-
- for (i, namespace) in (1..).zip(list.iter()) {
- r_println!(" {}. {}", i.to_string(), namespace.bold());
- }
-}
diff --git a/mling/src/cli/namespace_mgr.rs b/mling/src/cli/namespace_mgr.rs
deleted file mode 100644
index 4ea2229..0000000
--- a/mling/src/cli/namespace_mgr.rs
+++ /dev/null
@@ -1,128 +0,0 @@
-use mingling::{
- ShellContext, Suggest, SuggestItem,
- macros::{chain, completion, dispatcher, pack, r_println, renderer, route, suggest},
- parser::{Picker, Yes},
-};
-
-use crate::{
- Next,
- namespace_manager::{list_namespaces, remove_namespace, set_namespace_trusted},
-};
-
-dispatcher!("trust", TrustNamespaceCommand => TrustNamespaceEntry);
-dispatcher!("untrust", UntrustNamespaceCommand => UntrustNamespaceEntry);
-
-dispatcher!("set-trust", SetTrustNamespaceCommand => SetTrustNamespaceEntry);
-
-dispatcher!("rm-namespace", RemoveNamespaceCommand => RemoveNamespaceEntry);
-
-pack!(ErrorNamespaceNotProvided = ());
-pack!(ResultNamespaceTrustChanged = ());
-pack!(ResultNamespaceRemoved = ());
-
-#[completion(TrustNamespaceEntry)]
-pub(crate) fn comp_trust(ctx: &ShellContext) -> Suggest {
- if ctx.previous_word == "trust" {
- return Suggest::Suggest(
- list_namespaces(false, true, true)
- .into_iter()
- .map(SuggestItem::new)
- .collect::<std::collections::BTreeSet<_>>(),
- );
- }
- return suggest!();
-}
-
-#[completion(UntrustNamespaceEntry)]
-pub(crate) fn comp_untrust(ctx: &ShellContext) -> Suggest {
- if ctx.previous_word == "untrust" {
- return Suggest::Suggest(
- list_namespaces(true, false, true)
- .into_iter()
- .map(SuggestItem::new)
- .collect::<std::collections::BTreeSet<_>>(),
- );
- }
- return suggest!();
-}
-
-#[completion(SetTrustNamespaceEntry)]
-pub(crate) fn comp_set_trust(ctx: &ShellContext) -> Suggest {
- if ctx.typing_argument() {
- return suggest!(
- "-t": "Whether to trust this namespace",
- "--trusted": "Whether to trust this namespace",
- );
- }
- if ctx.filling_argument_first(["-t", "--trusted"]) {
- return suggest!("yes", "no");
- }
- if ctx.previous_word == "set-trust" {
- return Suggest::Suggest(
- list_namespaces(true, true, true)
- .into_iter()
- .map(SuggestItem::new)
- .collect::<std::collections::BTreeSet<_>>(),
- );
- }
- return suggest!();
-}
-
-#[completion(RemoveNamespaceEntry)]
-pub(crate) fn comp_remove_namespace(ctx: &ShellContext) -> Suggest {
- if ctx.previous_word == "rm-namespace" {
- return Suggest::Suggest(
- list_namespaces(true, true, true)
- .into_iter()
- .map(SuggestItem::new)
- .collect::<std::collections::BTreeSet<_>>(),
- );
- }
- return suggest!();
-}
-
-#[chain]
-pub(crate) fn handle_set_trust(p: SetTrustNamespaceEntry) -> Next {
- let (trusted, namespace) = route!(
- Picker::new(p.inner)
- .pick::<Yes>(["-t", "--trusted"])
- .pick_or_route((), ErrorNamespaceNotProvided::default().to_render())
- .unpack()
- );
- set_namespace_trusted(namespace, trusted.is_yes());
- ResultNamespaceTrustChanged::default().to_render()
-}
-
-#[chain]
-pub(crate) fn handle_trust(p: TrustNamespaceEntry) -> Next {
- SetTrustNamespaceEntry::new({
- let mut args = p.inner.clone();
- args.extend(vec!["-t".to_string(), "yes".to_string()]);
- args
- })
-}
-
-#[chain]
-pub(crate) fn handle_untrust(p: UntrustNamespaceEntry) -> Next {
- SetTrustNamespaceEntry::new({
- let mut args = p.inner.clone();
- args.extend(vec!["-t".to_string(), "no".to_string()]);
- args
- })
-}
-
-#[chain]
-pub(crate) fn handle_remove_namespace(p: RemoveNamespaceEntry) -> Next {
- let namespace = route!(
- Picker::new(p.inner)
- .pick_or_route((), ErrorNamespaceNotProvided::default().to_render())
- .unpack()
- );
- remove_namespace(namespace);
- ResultNamespaceRemoved::default().to_render()
-}
-
-#[renderer]
-pub(crate) fn render_error_namespace_not_provided(_prev: ErrorNamespaceNotProvided) {
- r_println!("Error: no namespace was provided!")
-}
diff --git a/mling/src/cli/read.rs b/mling/src/cli/read.rs
deleted file mode 100644
index e51e78f..0000000
--- a/mling/src/cli/read.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-use colored::Colorize;
-use std::path::PathBuf;
-
-use mingling::{
- Groupped,
- macros::{chain, dispatcher, pack, r_println, renderer},
-};
-use serde::Serialize;
-
-use crate::{
- Next,
- project_solver::{BinaryItem, solve_current_dir},
-};
-
-dispatcher!("show-target-dir", ReadTargetDirCommand => ReadTargetDirEntry);
-dispatcher!("show-workspace-root", ReadWorkspaceRootCommand => ReadWorkspaceRootEntry);
-dispatcher!("show-binaries", ReadBinariesCommand => ReadBinariesEntry);
-
-pack!(ResultDir = PathBuf);
-pack!(ResultTargetDirNotFound = ());
-
-#[derive(Debug, Serialize, Default, Groupped)]
-pub(crate) struct ResultBinaries {
- bin: Vec<BinaryItem>,
-}
-
-#[chain]
-#[allow(unused_variables)]
-pub(crate) fn handle_target_dir_entry(entry: ReadTargetDirEntry) -> Next {
- match solve_current_dir() {
- Ok(solved) => {
- let dir = solved.target_dir;
- ResultDir::new(dir).to_render()
- }
- Err(_) => ResultTargetDirNotFound::new(()).to_render(),
- }
-}
-
-#[chain]
-#[allow(unused_variables)]
-pub(crate) fn handle_workspace_root_entry(entry: ReadWorkspaceRootEntry) -> Next {
- match solve_current_dir() {
- Ok(solved) => {
- let dir = solved.workspace_root;
- ResultDir::new(dir).to_render()
- }
- Err(_) => ResultTargetDirNotFound::new(()).to_render(),
- }
-}
-
-#[chain]
-#[allow(unused_variables)]
-pub(crate) fn handle_binaries_entry(entry: ReadBinariesEntry) -> Next {
- match solve_current_dir() {
- Ok(solved) => {
- let binaries = solved.binaries;
- ResultBinaries { bin: binaries }.to_render()
- }
- Err(_) => ResultTargetDirNotFound::new(()).to_render(),
- }
-}
-
-#[renderer]
-pub(crate) fn render_dir(prev: ResultDir) {
- r_println!("{}", prev.inner.display())
-}
-
-#[renderer]
-pub(crate) fn render_binaries(prev: ResultBinaries) {
- for (i, item) in (1..).zip(prev.bin.iter()) {
- r_println!(
- "{}. {} ({})",
- i.to_string(),
- item.name.bold(),
- item.path.to_string_lossy().underline().bright_cyan()
- );
- }
-}