mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-14 21:20:48 +08:00
tauri-cli's get_binaries() adds every file in src-tauri/src/bin/ as a bundle binary, and the deb/rpm packagers copy each one to /usr/bin, so the dev-only bindings generator ended up as /usr/bin/frontend-contract (1.0 MB) in release packages and broke downstream repackaging (Copr: "Installed but unpackaged file(s) found"). There is no bundler option to exclude a binary, so move the generator to an example target, which cargo keeps dev-only and get_binaries() never scans, and invoke it via 'cargo run --example'. Ref https://github.com/clash-verge-rev/clash-verge-rev/pull/8131#issuecomment-6137907930
15 lines
705 B
Rust
15 lines
705 B
Rust
// Dev-only target: Tauri ships everything under src/bin/ to /usr/bin in deb/rpm
|
|
// bundles (PR #8131), so this generator must stay an example, never a bin.
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let mut args = std::env::args_os().skip(1);
|
|
let output = args
|
|
.next()
|
|
.map(std::path::PathBuf::from)
|
|
.unwrap_or_else(|| std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../src/services/bindings.ts"));
|
|
if args.next().is_some() {
|
|
return Err(std::io::Error::new(std::io::ErrorKind::InvalidInput, "expected at most one output path").into());
|
|
}
|
|
app_lib::ipc::builder().export(specta_typescript::Typescript::default(), output)?;
|
|
Ok(())
|
|
}
|