From 296aac7af67b9c8d0e3b35b7c057d43529e36148 Mon Sep 17 00:00:00 2001 From: Tony Date: Sat, 6 Jul 2024 17:41:09 +0800 Subject: [PATCH 1/4] Migrate updater with zip feature --- tooling/cli/src/helpers/cargo.rs | 9 ++++++++- tooling/cli/src/migrate/frontend.rs | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tooling/cli/src/helpers/cargo.rs b/tooling/cli/src/helpers/cargo.rs index c2cdac7ed634..00097648fb3c 100644 --- a/tooling/cli/src/helpers/cargo.rs +++ b/tooling/cli/src/helpers/cargo.rs @@ -17,7 +17,11 @@ pub struct CargoInstallOptions<'a> { pub target: Option<&'a str>, } -pub fn install(dependencies: &[String], cwd: Option<&Path>) -> crate::Result<()> { +pub fn install( + dependencies: &[String], + features: Option<&str>, + cwd: Option<&Path>, +) -> crate::Result<()> { let dependencies_str = if dependencies.len() > 1 { "dependencies" } else { @@ -34,6 +38,9 @@ pub fn install(dependencies: &[String], cwd: Option<&Path>) -> crate::Result<()> let mut cmd = Command::new("cargo"); cmd.arg("add").args(dependencies); + if let Some(features) = features { + cmd.arg("--features").arg(features); + } if let Some(cwd) = cwd { cmd.current_dir(cwd); diff --git a/tooling/cli/src/migrate/frontend.rs b/tooling/cli/src/migrate/frontend.rs index 55a3589afa83..320ee62e041d 100644 --- a/tooling/cli/src/migrate/frontend.rs +++ b/tooling/cli/src/migrate/frontend.rs @@ -90,7 +90,12 @@ pub fn migrate(app_dir: &Path, tauri_dir: &Path) -> Result<()> { } if !new_cargo_packages.is_empty() { - cargo::install(&new_cargo_packages, Some(tauri_dir)) + let features = if new_cargo_packages.contains(&"tauri-plugin-updater".to_string()) { + Some("tauri-plugin-updater/zip") + } else { + None + }; + cargo::install(&new_cargo_packages, features, Some(tauri_dir)) .context("Error installing new Cargo packages")?; } From 4a1a97df26f661a11db94cc61035acbe07a3b928 Mon Sep 17 00:00:00 2001 From: Tony Date: Sat, 6 Jul 2024 17:42:14 +0800 Subject: [PATCH 2/4] Add change file --- .changes/migrate-zipped-updater.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/migrate-zipped-updater.md diff --git a/.changes/migrate-zipped-updater.md b/.changes/migrate-zipped-updater.md new file mode 100644 index 000000000000..74e802778fe3 --- /dev/null +++ b/.changes/migrate-zipped-updater.md @@ -0,0 +1,6 @@ +--- +'tauri-cli': 'patch:feat' +'@tauri-apps/cli': 'patch:feat' +--- + +Migrate updater plugin with zip feature From da98a8434d9659561b993fd070829a2e5a6f6cb8 Mon Sep 17 00:00:00 2001 From: Tony Date: Sat, 6 Jul 2024 17:58:15 +0800 Subject: [PATCH 3/4] Refactor --- tooling/cli/src/helpers/cargo.rs | 6 +++--- tooling/cli/src/migrate/frontend.rs | 16 +++++++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tooling/cli/src/helpers/cargo.rs b/tooling/cli/src/helpers/cargo.rs index 00097648fb3c..161d0e786a45 100644 --- a/tooling/cli/src/helpers/cargo.rs +++ b/tooling/cli/src/helpers/cargo.rs @@ -19,7 +19,7 @@ pub struct CargoInstallOptions<'a> { pub fn install( dependencies: &[String], - features: Option<&str>, + features: &[String], cwd: Option<&Path>, ) -> crate::Result<()> { let dependencies_str = if dependencies.len() > 1 { @@ -38,8 +38,8 @@ pub fn install( let mut cmd = Command::new("cargo"); cmd.arg("add").args(dependencies); - if let Some(features) = features { - cmd.arg("--features").arg(features); + if !features.is_empty() { + cmd.arg("--features").args(features); } if let Some(cwd) = cwd { diff --git a/tooling/cli/src/migrate/frontend.rs b/tooling/cli/src/migrate/frontend.rs index 320ee62e041d..9960e4b9c668 100644 --- a/tooling/cli/src/migrate/frontend.rs +++ b/tooling/cli/src/migrate/frontend.rs @@ -25,12 +25,14 @@ const PLUGINIFIED_MODULES: &[&str] = &[ "shell", "updater", ]; +const ADDITIONAL_FEATURES: &[&str] = &["tauri-plugin-updater/zip"]; const JS_EXTENSIONS: &[&str] = &["js", "mjs", "jsx", "ts", "mts", "tsx"]; /// Returns a list of paths that could not be migrated pub fn migrate(app_dir: &Path, tauri_dir: &Path) -> Result<()> { let mut new_npm_packages = Vec::new(); let mut new_cargo_packages = Vec::new(); + let mut new_cargo_features = Vec::new(); let pm = PackageManager::from_project(app_dir) .into_iter() @@ -66,7 +68,12 @@ pub fn migrate(app_dir: &Path, tauri_dir: &Path) -> Result<()> { let js_plugin = format!("@tauri-apps/plugin-{module}"); let cargo_crate = format!("tauri-plugin-{module}"); new_npm_packages.push(js_plugin.clone()); - new_cargo_packages.push(cargo_crate); + new_cargo_packages.push(cargo_crate.clone()); + for feature in ADDITIONAL_FEATURES { + if feature.starts_with(&cargo_crate) { + new_cargo_features.push(feature.to_string()); + } + } js_plugin } else { return original; @@ -90,12 +97,7 @@ pub fn migrate(app_dir: &Path, tauri_dir: &Path) -> Result<()> { } if !new_cargo_packages.is_empty() { - let features = if new_cargo_packages.contains(&"tauri-plugin-updater".to_string()) { - Some("tauri-plugin-updater/zip") - } else { - None - }; - cargo::install(&new_cargo_packages, features, Some(tauri_dir)) + cargo::install(&new_cargo_packages, &new_cargo_features, Some(tauri_dir)) .context("Error installing new Cargo packages")?; } From d4e80ff5251cd133858ef8c02ffbd3051c10c9ed Mon Sep 17 00:00:00 2001 From: Tony Date: Sat, 6 Jul 2024 17:59:13 +0800 Subject: [PATCH 4/4] Avoid extra clone --- tooling/cli/src/migrate/frontend.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/cli/src/migrate/frontend.rs b/tooling/cli/src/migrate/frontend.rs index 9960e4b9c668..d918176e819c 100644 --- a/tooling/cli/src/migrate/frontend.rs +++ b/tooling/cli/src/migrate/frontend.rs @@ -68,12 +68,12 @@ pub fn migrate(app_dir: &Path, tauri_dir: &Path) -> Result<()> { let js_plugin = format!("@tauri-apps/plugin-{module}"); let cargo_crate = format!("tauri-plugin-{module}"); new_npm_packages.push(js_plugin.clone()); - new_cargo_packages.push(cargo_crate.clone()); for feature in ADDITIONAL_FEATURES { if feature.starts_with(&cargo_crate) { new_cargo_features.push(feature.to_string()); } } + new_cargo_packages.push(cargo_crate); js_plugin } else { return original;