aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_cli')
-rw-r--r--mingling_cli/Cargo.lock31
-rw-r--r--mingling_cli/Cargo.toml11
-rw-r--r--mingling_cli/build.rs8
-rw-r--r--mingling_cli/src/bin/cli.rs4
-rw-r--r--mingling_cli/src/config/cmd_cfg.rs2
-rw-r--r--mingling_cli/src/lib.rs6
-rw-r--r--mingling_cli/src/linter/cmd_explain.rs2
-rw-r--r--mingling_cli/src/linter/cmd_lint.rs2
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_install.rs23
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs2
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_pkg_enable.rs2
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_uninstall.rs2
-rw-r--r--mingling_cli/src/proj_mgr/cmd_class_add.rs2
13 files changed, 48 insertions, 49 deletions
diff --git a/mingling_cli/Cargo.lock b/mingling_cli/Cargo.lock
index c738a0e..aab6b82 100644
--- a/mingling_cli/Cargo.lock
+++ b/mingling_cli/Cargo.lock
@@ -95,9 +95,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]]
name = "camino"
-version = "1.2.4"
+version = "1.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0"
+checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d"
dependencies = [
"serde_core",
]
@@ -746,15 +746,15 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.187"
+version = "0.2.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7743783ea728ef5c31194c6590797eed286449b4a4e87d626d8a51f0a94e732"
+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
[[package]]
name = "libredox"
-version = "0.1.19"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa"
+checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a"
dependencies = [
"libc",
]
@@ -849,9 +849,7 @@ name = "mingling_core"
version = "0.5.0"
dependencies = [
"just_fmt 0.2.0",
- "just_template",
"might_be_async",
- "mingling_pathf",
]
[[package]]
@@ -859,6 +857,8 @@ name = "mingling_macros"
version = "0.5.0"
dependencies = [
"just_fmt 0.2.0",
+ "just_template",
+ "mingling_pathf",
"proc-macro2",
"quote",
"syn 2.0.119",
@@ -868,6 +868,7 @@ dependencies = [
name = "mingling_pathf"
version = "0.5.0"
dependencies = [
+ "cargo_metadata",
"just_fmt 0.2.0",
"proc-macro2",
"syn 2.0.119",
@@ -1402,18 +1403,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.19"
+version = "2.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.19"
+version = "2.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
dependencies = [
"proc-macro2",
"quote",
@@ -1464,13 +1465,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "2.7.1"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba"
+checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.119",
+ "syn 3.0.2",
]
[[package]]
diff --git a/mingling_cli/Cargo.toml b/mingling_cli/Cargo.toml
index dfc686d..577d2f8 100644
--- a/mingling_cli/Cargo.toml
+++ b/mingling_cli/Cargo.toml
@@ -7,7 +7,7 @@ repository = "https://github.com/mingling-rs/mingling/tree/main/mingling_cli"
authors = ["Weicao-CatilGrass"]
readme = "README.md"
-description = "Mingling's scaffolding tool for generating, analyzing, and modifying Mingling projects"
+description = "Mingling's toolchains for generating, analyzing, and modifying Mingling projects"
keywords = ["cli", "cli-framework", "command-line", "tools"]
categories = ["command-line-interface"]
@@ -30,15 +30,6 @@ features = [
"comp",
]
-[build-dependencies.mingling]
-path = "../mingling"
-features = [
- "build",
- "pathf",
- "dispatch_tree",
- "comp"
-]
-
[dependencies]
# Project analyze
diff --git a/mingling_cli/build.rs b/mingling_cli/build.rs
index 0dc0b28..4df33d0 100644
--- a/mingling_cli/build.rs
+++ b/mingling_cli/build.rs
@@ -1,14 +1,6 @@
-use mingling::build::{analyze_and_build_type_mapping, build_comp_scripts};
-
pub mod pre;
fn main() {
- // Perform path analysis and build type mapping table
- analyze_and_build_type_mapping().ok();
-
- // Generate Mingling CLI Completion Scripts
- build_comp_scripts("mling").unwrap();
-
// Generate lint registry
pre::gen_mod_file().unwrap();
pre::gen_lint_registry().unwrap();
diff --git a/mingling_cli/src/bin/cli.rs b/mingling_cli/src/bin/cli.rs
index f641749..d0c9e8b 100644
--- a/mingling_cli/src/bin/cli.rs
+++ b/mingling_cli/src/bin/cli.rs
@@ -10,8 +10,8 @@ async fn main() {
// Setups
program.with_setup(HelpFlagSetup::default());
- program.with_setup(ExitCodeSetup::default());
- program.with_setup(DirectoryEnvironmentSetup::default());
+ program.with_setup(ExitCodeSetup);
+ program.with_setup(DirectoryEnvironmentSetup);
program.with_setup(MinglingMetadataSetup);
program.with_setup(MlingConfigSetup);
diff --git a/mingling_cli/src/config/cmd_cfg.rs b/mingling_cli/src/config/cmd_cfg.rs
index 8baa4a1..cde7772 100644
--- a/mingling_cli/src/config/cmd_cfg.rs
+++ b/mingling_cli/src/config/cmd_cfg.rs
@@ -109,7 +109,7 @@ pub fn escape_config_value(input: &str) -> String {
}
#[completion(EntryCfg)]
-pub fn complete_config(_ctx: &ShellContext, config: &mut LazyRes<ResMlingConfig>) -> Suggest {
+pub fn complete_config(_ctx: ShellContext, config: &mut LazyRes<ResMlingConfig>) -> Suggest {
let config = config.get_ref();
let keys = config.get_hash_map().keys().cloned().collect::<Vec<_>>();
Suggest::from(keys).combine(suggest! {
diff --git a/mingling_cli/src/lib.rs b/mingling_cli/src/lib.rs
index e82300e..0b93f08 100644
--- a/mingling_cli/src/lib.rs
+++ b/mingling_cli/src/lib.rs
@@ -24,13 +24,17 @@ pub mod proj_mgr;
pub mod updater;
pub mod utils;
+// The `comp` feature makes `gen_program!()` generate completion scripts named after
+// the crate (`mingling-cli_comp.*`). Generate an additional set for the `mling` binary.
+mingling::macros::build_comp!("mling");
+
#[help]
pub fn help_global(_: EntryFallback) -> String {
format!("{}\n", include_str!("../help/help.txt").parse_color_code())
}
#[completion(EntryFallback)]
-pub fn complete_global(_ctx: &ShellContext) -> Suggest {
+pub fn complete_global(_ctx: ShellContext) -> Suggest {
suggest! {
HELP_FLAG: "Show help messages",
ARG_FEATURES.clone(): "List of features to enable",
diff --git a/mingling_cli/src/linter/cmd_explain.rs b/mingling_cli/src/linter/cmd_explain.rs
index 923e890..1d99c62 100644
--- a/mingling_cli/src/linter/cmd_explain.rs
+++ b/mingling_cli/src/linter/cmd_explain.rs
@@ -97,7 +97,7 @@ pub fn render_error_no_such_lint(
}
#[completion(EntryExplain)]
-pub fn complete_explain(ctx: &ShellContext, registry: &mut LazyRes<ResLintRegistry>) -> Suggest {
+pub fn complete_explain(ctx: ShellContext, registry: &mut LazyRes<ResLintRegistry>) -> Suggest {
let registry = registry.get_ref();
if ctx.previous_word != "explain" {
return Suggest::FileCompletion;
diff --git a/mingling_cli/src/linter/cmd_lint.rs b/mingling_cli/src/linter/cmd_lint.rs
index 7cab63a..b49605f 100644
--- a/mingling_cli/src/linter/cmd_lint.rs
+++ b/mingling_cli/src/linter/cmd_lint.rs
@@ -141,7 +141,7 @@ pub async fn handle_state_begin_linter(
}
#[completion(EntryLint)]
-pub fn complete_lint(ctx: &ShellContext) -> Suggest {
+pub fn complete_lint(ctx: ShellContext) -> Suggest {
if mingling::picker::parselib::build_possible_flags(
ParserStyle::global_style(),
&ARG_WITH_CHECKER.into_info(),
diff --git a/mingling_cli/src/pkg_mgr/cmd_install.rs b/mingling_cli/src/pkg_mgr/cmd_install.rs
index 8b2f3b7..0b552a6 100644
--- a/mingling_cli/src/pkg_mgr/cmd_install.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_install.rs
@@ -34,6 +34,9 @@ pub struct StateInstallBuild {
pub workspace_root: PathBuf,
pub install_dir: PathBuf,
pub release_dir: PathBuf,
+ /// Directory holding Mingling's compile-time build outputs
+ /// (`{target_directory}/mingling/`), e.g. the completion scripts.
+ pub mingling_dir: PathBuf,
pub exe_suffix: &'static str,
pub enable: bool,
}
@@ -43,6 +46,9 @@ pub struct StateInstallBuild {
pub struct StateInstallCopy {
pub install_dir: PathBuf,
pub release_dir: PathBuf,
+ /// Directory holding Mingling's compile-time build outputs
+ /// (`{target_directory}/mingling/`), e.g. the completion scripts.
+ pub mingling_dir: PathBuf,
pub exe_suffix: &'static str,
pub installed: Vec<PathBuf>,
pub enable: bool,
@@ -95,6 +101,10 @@ pub fn install(
.target_directory
.join("release")
.into_std_path_buf(),
+ mingling_dir: metadata
+ .target_directory
+ .join("mingling")
+ .into_std_path_buf(),
exe_suffix: env::consts::EXE_SUFFIX,
enable: enable.bool(),
}
@@ -117,6 +127,7 @@ pub fn handle_state_install_build(state: StateInstallBuild) -> Next {
StateInstallCopy {
install_dir: state.install_dir,
release_dir: state.release_dir,
+ mingling_dir: state.mingling_dir,
exe_suffix: state.exe_suffix,
installed: vec![],
enable: state.enable,
@@ -159,13 +170,13 @@ pub fn handle_state_install_copy(
}
}
- // Completion scripts are generated into the build profile directory
- // (OUT_DIR/../../../), copy every one whose name contains `_comp`,
- // regardless of its suffix
- for entry in fs::read_dir(&state.release_dir).map_err(|e| {
+ // Completion scripts are generated into `{target_directory}/mingling/` at
+ // compile time (via `build_comp!()`); copy every one whose name contains
+ // `_comp`, regardless of its suffix.
+ for entry in fs::read_dir(&state.mingling_dir).map_err(|e| {
io::Error::new(
e.kind(),
- format!("failed to read {}: {e}", state.release_dir.display()),
+ format!("failed to read {}: {e}", state.mingling_dir.display()),
)
})? {
let entry = entry.map_err(|e| {
@@ -256,7 +267,7 @@ pub fn render_error_pkg_enable_failed(err: ErrorPkgEnableFailed) -> RenderResult
}
#[completion(EntryInstall)]
-pub fn complete_install(ctx: &ShellContext) -> Suggest {
+pub fn complete_install(ctx: ShellContext) -> Suggest {
if ctx.previous_word != "install" {
return Suggest::FileCompletion;
}
diff --git a/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs b/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
index b4989eb..ea6997f 100644
--- a/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
@@ -93,7 +93,7 @@ pub fn render_error_package_not_enabled(err: ErrorPackageNotEnabled) -> RenderRe
}
#[completion(EntryPkgDisable)]
-pub fn complete_pkg_disable(ctx: &ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
+pub fn complete_pkg_disable(ctx: ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
if ctx.previous_word != "pkg-disable" {
return Suggest::FileCompletion;
}
diff --git a/mingling_cli/src/pkg_mgr/cmd_pkg_enable.rs b/mingling_cli/src/pkg_mgr/cmd_pkg_enable.rs
index 1235cd3..377bd33 100644
--- a/mingling_cli/src/pkg_mgr/cmd_pkg_enable.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_pkg_enable.rs
@@ -118,7 +118,7 @@ pub fn render_error_no_matching_version(err: ErrorNoMatchingVersion) -> RenderRe
}
#[completion(EntryPkgEnable)]
-pub fn complete_pkg_enable(ctx: &ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
+pub fn complete_pkg_enable(ctx: ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
if ctx.previous_word != "pkg-enable" {
return Suggest::FileCompletion;
}
diff --git a/mingling_cli/src/pkg_mgr/cmd_uninstall.rs b/mingling_cli/src/pkg_mgr/cmd_uninstall.rs
index 0c3886c..0c8781a 100644
--- a/mingling_cli/src/pkg_mgr/cmd_uninstall.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_uninstall.rs
@@ -154,7 +154,7 @@ pub fn render_error_no_matching_packages(_: ErrorNoMatchingPackages) -> RenderRe
}
#[completion(EntryUninstall)]
-pub fn complete_uninstall(ctx: &ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
+pub fn complete_uninstall(ctx: ShellContext, packages_dir: &ResPackagesDir) -> Suggest {
if ctx.previous_word != "uninstall" {
return Suggest::FileCompletion;
}
diff --git a/mingling_cli/src/proj_mgr/cmd_class_add.rs b/mingling_cli/src/proj_mgr/cmd_class_add.rs
index f9272a5..f42bbff 100644
--- a/mingling_cli/src/proj_mgr/cmd_class_add.rs
+++ b/mingling_cli/src/proj_mgr/cmd_class_add.rs
@@ -250,7 +250,7 @@ pub fn render_error_class_write_failed(err: ErrorClassWriteFailed) -> RenderResu
}
#[completion(EntryClassAdd)]
-pub fn complete_class_add(ctx: &ShellContext, cwd: &ResCurrentDir) -> Suggest {
+pub fn complete_class_add(ctx: ShellContext, cwd: &ResCurrentDir) -> Suggest {
if ctx.previous_word != "class-add" {
return Suggest::file_comp();
}