diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-22 01:55:17 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-22 16:15:56 +0800 |
| commit | 8646a3eab52c2b299304d3dfc142a358c74b0697 (patch) | |
| tree | 0891e55179dd8f182491f3a2a3b9ec5b43a7dbe0 /mingling_cli | |
| parent | 9fe46c772ca8e8c5555488cb378894a7666ca911 (diff) | |
feat(mingling_cli): add wrapper binary and optimize release profile
Add `mling` wrapper binary that delegates to `mingling-cli`, enabling
separate binary names while maintaining Cargo conventions.
Diffstat (limited to 'mingling_cli')
| -rw-r--r-- | mingling_cli/Cargo.toml | 10 | ||||
| -rw-r--r-- | mingling_cli/help/help.txt | 0 | ||||
| -rw-r--r-- | mingling_cli/src/bin/wrapper.rs | 47 |
3 files changed, 57 insertions, 0 deletions
diff --git a/mingling_cli/Cargo.toml b/mingling_cli/Cargo.toml index 5b36c6b..98833ff 100644 --- a/mingling_cli/Cargo.toml +++ b/mingling_cli/Cargo.toml @@ -13,6 +13,10 @@ categories = ["command-line-interface"] [[bin]] name = "mling" +path = "src/bin/wrapper.rs" + +[[bin]] +name = "mingling-cli" path = "src/main.rs" [dependencies.mingling] @@ -57,4 +61,10 @@ serde_json = "1.0.151" # Code gen just_template = "0.2.0" +[profile.release] +opt-level = "z" +lto = true +codegen-units = 1 +strip = true + [workspace] diff --git a/mingling_cli/help/help.txt b/mingling_cli/help/help.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/mingling_cli/help/help.txt diff --git a/mingling_cli/src/bin/wrapper.rs b/mingling_cli/src/bin/wrapper.rs new file mode 100644 index 0000000..b1aecf6 --- /dev/null +++ b/mingling_cli/src/bin/wrapper.rs @@ -0,0 +1,47 @@ +use std::env; +use std::ffi::OsString; +use std::path::PathBuf; +use std::process::{self, Command}; + +fn main() { + exec(); +} + +fn exec() { + fn target_exe_path() -> PathBuf { + let mut path = env::current_exe().expect("Fail to read current_exe"); + path.pop(); + + let target_name = if cfg!(target_os = "windows") { + "mingling-cli.exe" + } else { + "mingling-cli" + }; + + path.push(target_name); + path + } + + let mut args: Vec<OsString> = env::args_os().collect(); + let pass_args = if args.len() > 1 { + args.split_off(1) + } else { + vec![] + }; + + let target = target_exe_path(); + + let status = Command::new(&target) + .args(&pass_args) + .status() + .unwrap_or_else(|_| { + process::exit(1); + }); + + match status.code() { + Some(code) => process::exit(code), + None => { + process::exit(1); + } + } +} |
