From d453e2e06a6556c8aa6d46a86a4bdbdcdba80677 Mon Sep 17 00:00:00 2001 From: sftse Date: Thu, 29 Jan 2026 03:35:55 +0100 Subject: [PATCH] refactor(tauri-cli): remove trait implemented only once (#14840) --- crates/tauri-cli/src/build.rs | 2 +- crates/tauri-cli/src/bundle.rs | 2 +- crates/tauri-cli/src/dev.rs | 2 +- crates/tauri-cli/src/helpers/mod.rs | 5 +-- crates/tauri-cli/src/inspect.rs | 2 +- crates/tauri-cli/src/interface/mod.rs | 39 +------------------ crates/tauri-cli/src/interface/rust.rs | 20 +++++----- .../mobile/android/android_studio_script.rs | 2 +- crates/tauri-cli/src/mobile/android/build.rs | 2 +- crates/tauri-cli/src/mobile/android/dev.rs | 2 +- crates/tauri-cli/src/mobile/android/run.rs | 2 +- crates/tauri-cli/src/mobile/init.rs | 2 +- crates/tauri-cli/src/mobile/ios/build.rs | 2 +- crates/tauri-cli/src/mobile/ios/dev.rs | 2 +- crates/tauri-cli/src/mobile/ios/run.rs | 2 +- .../tauri-cli/src/mobile/ios/xcode_script.rs | 2 +- crates/tauri-cli/src/mobile/mod.rs | 2 +- 17 files changed, 25 insertions(+), 67 deletions(-) diff --git a/crates/tauri-cli/src/build.rs b/crates/tauri-cli/src/build.rs index b43b3c9ae..627fd763a 100644 --- a/crates/tauri-cli/src/build.rs +++ b/crates/tauri-cli/src/build.rs @@ -11,7 +11,7 @@ use crate::{ config::{get_config, ConfigMetadata, FrontendDist}, }, info::plugins::check_mismatched_packages, - interface::{rust::get_cargo_target_dir, AppInterface, Interface}, + interface::{rust::get_cargo_target_dir, AppInterface}, ConfigValue, Result, }; use clap::{ArgAction, Parser}; diff --git a/crates/tauri-cli/src/bundle.rs b/crates/tauri-cli/src/bundle.rs index 638c215e9..4d3637ab5 100644 --- a/crates/tauri-cli/src/bundle.rs +++ b/crates/tauri-cli/src/bundle.rs @@ -20,7 +20,7 @@ use crate::{ config::{get_config, ConfigMetadata}, updater_signature, }, - interface::{AppInterface, AppSettings, Interface}, + interface::{AppInterface, AppSettings}, ConfigValue, }; diff --git a/crates/tauri-cli/src/dev.rs b/crates/tauri-cli/src/dev.rs index a66186919..56dacf96f 100644 --- a/crates/tauri-cli/src/dev.rs +++ b/crates/tauri-cli/src/dev.rs @@ -10,7 +10,7 @@ use crate::{ config::{get_config, reload_config, BeforeDevCommand, ConfigMetadata, FrontendDist}, }, info::plugins::check_mismatched_packages, - interface::{AppInterface, ExitReason, Interface}, + interface::{AppInterface, ExitReason}, CommandExt, ConfigValue, Error, Result, }; diff --git a/crates/tauri-cli/src/helpers/mod.rs b/crates/tauri-cli/src/helpers/mod.rs index 3d2a5f0e9..05ea00109 100644 --- a/crates/tauri-cli/src/helpers/mod.rs +++ b/crates/tauri-cli/src/helpers/mod.rs @@ -30,10 +30,7 @@ use tauri_utils::config::HookCommand; #[cfg(not(target_os = "windows"))] use crate::Error; -use crate::{ - interface::{AppInterface, Interface}, - CommandExt, -}; +use crate::{interface::AppInterface, CommandExt}; pub fn command_env(debug: bool) -> HashMap<&'static str, String> { let mut map = HashMap::new(); diff --git a/crates/tauri-cli/src/inspect.rs b/crates/tauri-cli/src/inspect.rs index de26dd984..1e2334965 100644 --- a/crates/tauri-cli/src/inspect.rs +++ b/crates/tauri-cli/src/inspect.rs @@ -6,7 +6,7 @@ use std::path::Path; use crate::Result; use clap::{Parser, Subcommand}; -use crate::interface::{AppInterface, AppSettings, Interface}; +use crate::interface::{AppInterface, AppSettings}; #[derive(Debug, Parser)] #[clap(about = "Inspect values used by Tauri")] diff --git a/crates/tauri-cli/src/interface/mod.rs b/crates/tauri-cli/src/interface/mod.rs index dc15e7ecb..f10bef030 100644 --- a/crates/tauri-cli/src/interface/mod.rs +++ b/crates/tauri-cli/src/interface/mod.rs @@ -5,16 +5,11 @@ pub mod rust; use std::{ - collections::HashMap, path::{Path, PathBuf}, process::ExitStatus, - sync::Arc, }; -use crate::{ - error::Context, helpers::app_paths::Dirs, helpers::config::Config, - helpers::config::ConfigMetadata, -}; +use crate::{error::Context, helpers::config::Config}; use tauri_bundler::bundle::{PackageType, Settings, SettingsBuilder}; pub use rust::{MobileOptions, Options, Rust as AppInterface, WatcherOptions}; @@ -104,35 +99,3 @@ pub enum ExitReason { /// Regular exit. NormalExit, } - -pub trait Interface: Sized { - type AppSettings: AppSettings; - - fn new(config: &Config, target: Option, tauri_dir: &Path) -> crate::Result; - fn app_settings(&self) -> Arc; - fn env(&self) -> HashMap<&str, String>; - fn build(&mut self, options: Options, dirs: &Dirs) -> crate::Result; - fn dev, ExitReason) + Send + Sync + 'static>( - &mut self, - config: &mut ConfigMetadata, - options: Options, - on_exit: F, - dirs: &Dirs, - ) -> crate::Result<()>; - fn mobile_dev< - R: Fn(MobileOptions, &ConfigMetadata) -> crate::Result>, - >( - &mut self, - config: &mut ConfigMetadata, - options: MobileOptions, - runner: R, - dirs: &Dirs, - ) -> crate::Result<()>; - fn watch crate::Result>>( - &mut self, - config: &mut ConfigMetadata, - options: WatcherOptions, - runner: R, - dirs: &Dirs, - ) -> crate::Result<()>; -} diff --git a/crates/tauri-cli/src/interface/rust.rs b/crates/tauri-cli/src/interface/rust.rs index 3878b8845..d1bb2ebbe 100644 --- a/crates/tauri-cli/src/interface/rust.rs +++ b/crates/tauri-cli/src/interface/rust.rs @@ -27,7 +27,7 @@ use tauri_bundler::{ }; use tauri_utils::config::{parse::is_configuration_file, DeepLinkProtocol, RunnerConfig, Updater}; -use super::{AppSettings, DevProcess, ExitReason, Interface}; +use super::{AppSettings, DevProcess, ExitReason}; use crate::{ error::{Context, Error, ErrorExt}, helpers::{ @@ -134,10 +134,8 @@ pub struct Rust { main_binary_name: Option, } -impl Interface for Rust { - type AppSettings = RustAppSettings; - - fn new(config: &Config, target: Option, tauri_dir: &Path) -> crate::Result { +impl Rust { + pub fn new(config: &Config, target: Option, tauri_dir: &Path) -> crate::Result { let manifest = { let (tx, rx) = sync_channel(1); let mut watcher = new_debouncer(Duration::from_secs(1), None, move |r| { @@ -177,11 +175,11 @@ impl Interface for Rust { }) } - fn app_settings(&self) -> Arc { + pub fn app_settings(&self) -> Arc { self.app_settings.clone() } - fn build(&mut self, options: Options, dirs: &Dirs) -> crate::Result { + pub fn build(&mut self, options: Options, dirs: &Dirs) -> crate::Result { desktop::build( options, &self.app_settings, @@ -192,7 +190,7 @@ impl Interface for Rust { ) } - fn dev, ExitReason) + Send + Sync + 'static>( + pub fn dev, ExitReason) + Send + Sync + 'static>( &mut self, config: &mut ConfigMetadata, mut options: Options, @@ -236,7 +234,7 @@ impl Interface for Rust { } } - fn mobile_dev< + pub fn mobile_dev< R: Fn(MobileOptions, &ConfigMetadata) -> crate::Result>, >( &mut self, @@ -270,7 +268,7 @@ impl Interface for Rust { } } - fn watch crate::Result>>( + pub fn watch crate::Result>>( &mut self, config: &mut ConfigMetadata, options: WatcherOptions, @@ -287,7 +285,7 @@ impl Interface for Rust { ) } - fn env(&self) -> HashMap<&str, String> { + pub fn env(&self) -> HashMap<&str, String> { let mut env = HashMap::new(); env.insert( "TAURI_ENV_TARGET_TRIPLE", diff --git a/crates/tauri-cli/src/mobile/android/android_studio_script.rs b/crates/tauri-cli/src/mobile/android/android_studio_script.rs index ce1d6ba8e..2240a3a95 100644 --- a/crates/tauri-cli/src/mobile/android/android_studio_script.rs +++ b/crates/tauri-cli/src/mobile/android/android_studio_script.rs @@ -6,7 +6,7 @@ use super::{detect_target_ok, ensure_init, env, get_app, get_config, read_option use crate::{ error::{Context, ErrorExt}, helpers::config::{get_config as get_tauri_config, reload_config as reload_tauri_config}, - interface::{AppInterface, Interface}, + interface::AppInterface, mobile::CliOptions, Error, Result, }; diff --git a/crates/tauri-cli/src/mobile/android/build.rs b/crates/tauri-cli/src/mobile/android/build.rs index 7b85ef47d..be91b612b 100644 --- a/crates/tauri-cli/src/mobile/android/build.rs +++ b/crates/tauri-cli/src/mobile/android/build.rs @@ -14,7 +14,7 @@ use crate::{ config::{get_config as get_tauri_config, ConfigMetadata}, flock, }, - interface::{AppInterface, Interface, Options as InterfaceOptions}, + interface::{AppInterface, Options as InterfaceOptions}, mobile::{android::generate_tauri_properties, write_options, CliOptions, TargetDevice}, ConfigValue, Error, Result, }; diff --git a/crates/tauri-cli/src/mobile/android/dev.rs b/crates/tauri-cli/src/mobile/android/dev.rs index a4cfaacd4..b17e141c2 100644 --- a/crates/tauri-cli/src/mobile/android/dev.rs +++ b/crates/tauri-cli/src/mobile/android/dev.rs @@ -14,7 +14,7 @@ use crate::{ config::{get_config as get_tauri_config, ConfigMetadata}, flock, }, - interface::{AppInterface, Interface, MobileOptions, Options as InterfaceOptions}, + interface::{AppInterface, MobileOptions, Options as InterfaceOptions}, mobile::{ android::generate_tauri_properties, use_network_address_for_dev_url, write_options, CliOptions, DevChild, DevHost, DevProcess, TargetDevice, diff --git a/crates/tauri-cli/src/mobile/android/run.rs b/crates/tauri-cli/src/mobile/android/run.rs index c07c6ba6d..c77596b03 100644 --- a/crates/tauri-cli/src/mobile/android/run.rs +++ b/crates/tauri-cli/src/mobile/android/run.rs @@ -14,7 +14,7 @@ use super::{configure_cargo, device_prompt, env}; use crate::{ error::Context, helpers::config::ConfigMetadata, - interface::{DevProcess, Interface, WatcherOptions}, + interface::{DevProcess, WatcherOptions}, mobile::{DevChild, TargetDevice}, ConfigValue, Result, }; diff --git a/crates/tauri-cli/src/mobile/init.rs b/crates/tauri-cli/src/mobile/init.rs index f187b9f12..7ace53b51 100644 --- a/crates/tauri-cli/src/mobile/init.rs +++ b/crates/tauri-cli/src/mobile/init.rs @@ -6,7 +6,7 @@ use super::{get_app, Target}; use crate::{ helpers::app_paths::Dirs, helpers::{config::get_config as get_tauri_config, template::JsonMap}, - interface::{AppInterface, Interface}, + interface::AppInterface, ConfigValue, Result, }; use cargo_mobile2::{ diff --git a/crates/tauri-cli/src/mobile/ios/build.rs b/crates/tauri-cli/src/mobile/ios/build.rs index 5ad7e58d5..934f47cda 100644 --- a/crates/tauri-cli/src/mobile/ios/build.rs +++ b/crates/tauri-cli/src/mobile/ios/build.rs @@ -16,7 +16,7 @@ use crate::{ flock, plist::merge_plist, }, - interface::{AppInterface, Interface, Options as InterfaceOptions}, + interface::{AppInterface, Options as InterfaceOptions}, mobile::{ios::ensure_ios_runtime_installed, write_options, CliOptions, TargetDevice}, ConfigValue, Error, Result, }; diff --git a/crates/tauri-cli/src/mobile/ios/dev.rs b/crates/tauri-cli/src/mobile/ios/dev.rs index 397875ac2..d530b528c 100644 --- a/crates/tauri-cli/src/mobile/ios/dev.rs +++ b/crates/tauri-cli/src/mobile/ios/dev.rs @@ -15,7 +15,7 @@ use crate::{ flock, plist::merge_plist, }, - interface::{AppInterface, Interface, MobileOptions, Options as InterfaceOptions}, + interface::{AppInterface, MobileOptions, Options as InterfaceOptions}, mobile::{ ios::ensure_ios_runtime_installed, use_network_address_for_dev_url, write_options, CliOptions, DevChild, DevHost, DevProcess, diff --git a/crates/tauri-cli/src/mobile/ios/run.rs b/crates/tauri-cli/src/mobile/ios/run.rs index 0021ef868..61e696ef9 100644 --- a/crates/tauri-cli/src/mobile/ios/run.rs +++ b/crates/tauri-cli/src/mobile/ios/run.rs @@ -11,7 +11,7 @@ use super::{device_prompt, env}; use crate::{ error::Context, helpers::config::{get_config as get_tauri_config, ConfigMetadata}, - interface::{DevProcess, Interface, WatcherOptions}, + interface::{DevProcess, WatcherOptions}, mobile::{DevChild, TargetDevice}, ConfigValue, Result, }; diff --git a/crates/tauri-cli/src/mobile/ios/xcode_script.rs b/crates/tauri-cli/src/mobile/ios/xcode_script.rs index 0b30ba2f4..412941509 100644 --- a/crates/tauri-cli/src/mobile/ios/xcode_script.rs +++ b/crates/tauri-cli/src/mobile/ios/xcode_script.rs @@ -6,7 +6,7 @@ use super::{ensure_init, env, get_app, get_config, read_options, MobileTarget}; use crate::{ error::{Context, ErrorExt}, helpers::config::{get_config as get_tauri_config, reload_config as reload_tauri_config}, - interface::{AppInterface, Interface, Options as InterfaceOptions}, + interface::{AppInterface, Options as InterfaceOptions}, mobile::ios::LIB_OUTPUT_FILE_NAME, Error, Result, }; diff --git a/crates/tauri-cli/src/mobile/mod.rs b/crates/tauri-cli/src/mobile/mod.rs index 6b06e0cac..0191ead14 100644 --- a/crates/tauri-cli/src/mobile/mod.rs +++ b/crates/tauri-cli/src/mobile/mod.rs @@ -5,7 +5,7 @@ use crate::{ error::{Context, ErrorExt}, helpers::config::{reload_config, Config as TauriConfig, ConfigMetadata}, - interface::{AppInterface, AppSettings, DevProcess, Interface, Options as InterfaceOptions}, + interface::{AppInterface, AppSettings, DevProcess, Options as InterfaceOptions}, ConfigValue, Error, Result, }; use heck::ToSnekCase;