diff --git a/.changes/cli.js-empty-args.md b/.changes/cli.js-empty-args.md new file mode 100644 index 000000000..1750745bc --- /dev/null +++ b/.changes/cli.js-empty-args.md @@ -0,0 +1,5 @@ +--- +"cli.js": patch +--- + +Allow empty argument when running `cli.rs`. diff --git a/.changes/fix-bundle-targets-config.md b/.changes/fix-bundle-targets-config.md new file mode 100644 index 000000000..1db217ff5 --- /dev/null +++ b/.changes/fix-bundle-targets-config.md @@ -0,0 +1,5 @@ +--- +"cli.rs": patch +--- + +Fixes `tauri.conf.json > tauri > bundle > targets` not applying to the bundler. diff --git a/tooling/cli.js/src/api/cli.ts b/tooling/cli.js/src/api/cli.ts index e7d9ef218..8717df621 100644 --- a/tooling/cli.js/src/api/cli.ts +++ b/tooling/cli.js/src/api/cli.ts @@ -20,9 +20,9 @@ function toKebabCase(value: string): string { .toLowerCase() } -async function runCliCommand(command: string, args: Args): Promise { +async function runCliCommand(command: string, args?: Args): Promise { const argsArray = [] - for (const [argName, argValue] of Object.entries(args)) { + for (const [argName, argValue] of Object.entries(args ?? {})) { if (argValue === false) { continue } @@ -37,9 +37,9 @@ async function runCliCommand(command: string, args: Args): Promise { return await runOnRustCli(command, argsArray) } -export const init = async (args: Args): Promise => +export const init = async (args?: Args): Promise => await runCliCommand('init', args) -export const dev = async (args: Args): Promise => +export const dev = async (args?: Args): Promise => await runCliCommand('dev', args) -export const build = async (args: Args): Promise => +export const build = async (args?: Args): Promise => await runCliCommand('build', args) diff --git a/tooling/cli.js/test/jest/__tests__/template.spec.js b/tooling/cli.js/test/jest/__tests__/template.spec.js index c1c0b40e9..e07c9d93d 100644 --- a/tooling/cli.js/test/jest/__tests__/template.spec.js +++ b/tooling/cli.js/test/jest/__tests__/template.spec.js @@ -30,15 +30,7 @@ describe('[CLI] cli.js template', () => { `workspace = { }\n[patch.crates-io]\ntao = { git = "https://github.com/tauri-apps/tao", rev = "a3f533232df25dc30998809094ed5431b449489c" }\n\n${manifestFile}` ) - const { promise: buildPromise } = await build({ - config: { - tauri: { - bundle: { - targets: ['deb', 'app', 'msi', 'appimage'] // we can't bundle dmg on CI so we remove it here - } - } - } - }) + const { promise: buildPromise } = await build() await buildPromise process.chdir(cwd) }) diff --git a/tooling/cli.rs/config_definition.rs b/tooling/cli.rs/config_definition.rs index f153276e8..c23fc4a61 100644 --- a/tooling/cli.rs/config_definition.rs +++ b/tooling/cli.rs/config_definition.rs @@ -18,6 +18,16 @@ pub enum BundleTarget { One(String), } +impl BundleTarget { + #[allow(dead_code)] + pub fn to_vec(&self) -> Vec { + match self { + Self::All(list) => list.clone(), + Self::One(i) => vec![i.clone()], + } + } +} + #[skip_serializing_none] #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase", deny_unknown_fields)] diff --git a/tooling/cli.rs/src/build.rs b/tooling/cli.rs/src/build.rs index 5a540d70b..47a176770 100644 --- a/tooling/cli.rs/src/build.rs +++ b/tooling/cli.rs/src/build.rs @@ -192,6 +192,25 @@ impl Build { } settings_builder = settings_builder.package_types(types); + } else if let Some(targets) = &config_.tauri.bundle.targets { + let mut types = vec![]; + let targets = targets.to_vec(); + if !targets.contains(&"all".into()) { + for name in targets { + match PackageType::from_short_name(&name) { + Some(package_type) => { + types.push(package_type); + } + None => { + return Err(anyhow::anyhow!(format!( + "Unsupported bundle format: {}", + name + ))); + } + } + } + settings_builder = settings_builder.package_types(types); + } } // Bundle the project