mirror of
https://github.com/tauri-apps/tauri.git
synced 2026-02-06 20:06:52 +00:00
* refactor(tauri-cli): introduce replacement functions * refactor(tauri-cli): apply replacement to remove.rs * refactor(tauri-cli): apply replacement to icon.rs * refactor(tauri-cli): apply replacement to bundle.rs * refactor(tauri-cli): apply replacement to build.rs * refactor(tauri-cli): apply replacement to add.rs * refactor(tauri-cli): apply replacement to dev.rs * refactor(tauri-cli): less controlflow * refactor(tauri-cli): split config loading from locking static * refactor(tauri-cli): remove duplicate checks covered by if let Some(tauri_dir) = tauri_dir tauri_dir.is_some() must be true, otherwise the entire block is not run, so the frontend_dir check is irrelevant * fmt * refactor(tauri-cli): apply replacement to inspect.rs * refactor(tauri-cli): dont use statics for config * refactor(tauri-cli): finish threading directory paths through functions * fix: clippy * fixup CI * refactor(tauri-cli): dont need mutex * refactor(tauri-cli): rescope mutex use to minimal necessary * fix CI, reduce mutex use * fixup PR #14607 * fix: clippy * refactor(tauri-cli): remove ConfigHandle * refactor(tauri-cli): remove more unwraps and panicing functions * refactor(tauri-cli): less mutexes * refactor(tauri-cli): undo mistaken change, address review comment * Split android build to 2 functions * Pass in dirs to migration v1 like the v2 beta * Add change file --------- Co-authored-by: Tony <legendmastertony@gmail.com>
61 lines
1.6 KiB
Rust
61 lines
1.6 KiB
Rust
// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
use clap::Parser;
|
|
|
|
use crate::{
|
|
acl,
|
|
helpers::{app_paths::resolve_frontend_dir, cargo, npm::PackageManager},
|
|
Result,
|
|
};
|
|
|
|
#[derive(Debug, Parser)]
|
|
#[clap(about = "Remove a tauri plugin from the project")]
|
|
pub struct Options {
|
|
/// The plugin to remove.
|
|
pub plugin: String,
|
|
}
|
|
|
|
pub fn command(options: Options) -> Result<()> {
|
|
let dirs = crate::helpers::app_paths::resolve_dirs();
|
|
let plugin = options.plugin;
|
|
|
|
let crate_name = format!("tauri-plugin-{plugin}");
|
|
|
|
let mut plugins = crate::helpers::plugins::known_plugins();
|
|
let metadata = plugins.remove(plugin.as_str()).unwrap_or_default();
|
|
|
|
let frontend_dir = resolve_frontend_dir();
|
|
|
|
let target_str = metadata
|
|
.desktop_only
|
|
.then_some(r#"cfg(not(any(target_os = "android", target_os = "ios")))"#)
|
|
.or_else(|| {
|
|
metadata
|
|
.mobile_only
|
|
.then_some(r#"cfg(any(target_os = "android", target_os = "ios"))"#)
|
|
});
|
|
|
|
cargo::uninstall_one(cargo::CargoUninstallOptions {
|
|
name: &crate_name,
|
|
cwd: Some(dirs.tauri),
|
|
target: target_str,
|
|
})?;
|
|
|
|
if !metadata.rust_only {
|
|
if let Some(manager) = frontend_dir.map(PackageManager::from_project) {
|
|
let npm_name = format!("@tauri-apps/plugin-{plugin}");
|
|
manager.remove(&[npm_name], dirs.tauri)?;
|
|
}
|
|
|
|
acl::permission::rm::command(acl::permission::rm::Options {
|
|
identifier: format!("{plugin}:*"),
|
|
})?;
|
|
}
|
|
|
|
log::info!("Now, you must manually remove the plugin from your Rust code.",);
|
|
|
|
Ok(())
|
|
}
|