Skip to content

Commit 2d47352

Browse files
fix(cli): make app_dir() logic consistent (#10418)
* fix(cli): Make app_dir() consistent by basing it on the explicit invocation directory rather than the current working directory * resolve app paths before everything else * fix xcode script * fix test --------- Co-authored-by: Lucas Nogueira <lucas@tauri.app>
1 parent 0afee5e commit 2d47352

File tree

28 files changed

+145
-74
lines changed

28 files changed

+145
-74
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"tauri-cli": patch:bug
3+
"@tauri-apps/cli": patch:bug
4+
---
5+
6+
CLI commands will now consistently search for the `app_dir` (the directory containing `package.json`) from the current working directory of the command invocation.

examples/api/src-tauri/Cargo.lock

Lines changed: 31 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tooling/cli/src/acl/capability/new.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ pub struct Options {
3636
}
3737

3838
pub fn command(options: Options) -> Result<()> {
39+
crate::helpers::app_paths::resolve();
40+
3941
let identifier = match options.identifier {
4042
Some(i) => i,
4143
None => prompts::input("What's the capability identifier?", None, false, false)?.unwrap(),

tooling/cli/src/acl/permission/add.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::path::Path;
77
use clap::Parser;
88

99
use crate::{
10-
helpers::{app_paths::tauri_dir_opt, prompts},
10+
helpers::{app_paths::resolve_tauri_dir, prompts},
1111
Result,
1212
};
1313

@@ -87,7 +87,7 @@ pub struct Options {
8787
}
8888

8989
pub fn command(options: Options) -> Result<()> {
90-
let dir = match tauri_dir_opt() {
90+
let dir = match resolve_tauri_dir() {
9191
Some(t) => t,
9292
None => std::env::current_dir()?,
9393
};

tooling/cli/src/acl/permission/ls.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ pub struct Options {
2121
}
2222

2323
pub fn command(options: Options) -> Result<()> {
24+
crate::helpers::app_paths::resolve();
25+
2426
let tauri_dir = tauri_dir();
2527
let acl_manifests_path = tauri_dir
2628
.join("gen")

tooling/cli/src/acl/permission/new.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use clap::Parser;
88

99
use crate::{
1010
acl::FileFormat,
11-
helpers::{app_paths::tauri_dir_opt, prompts},
11+
helpers::{app_paths::resolve_tauri_dir, prompts},
1212
Result,
1313
};
1414

@@ -69,7 +69,7 @@ pub fn command(options: Options) -> Result<()> {
6969
let path = match options.out {
7070
Some(o) => o.canonicalize()?,
7171
None => {
72-
let dir = match tauri_dir_opt() {
72+
let dir = match resolve_tauri_dir() {
7373
Some(t) => t,
7474
None => std::env::current_dir()?,
7575
};

tooling/cli/src/acl/permission/rm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::path::Path;
77
use clap::Parser;
88
use tauri_utils::acl::{manifest::PermissionFile, PERMISSION_SCHEMA_FILE_NAME};
99

10-
use crate::{acl::FileFormat, helpers::app_paths::tauri_dir_opt, Result};
10+
use crate::{acl::FileFormat, helpers::app_paths::resolve_tauri_dir, Result};
1111

1212
fn rm_permission_files(identifier: &str, dir: &Path) -> Result<()> {
1313
for entry in std::fs::read_dir(dir)?.flatten() {
@@ -126,7 +126,7 @@ pub fn command(options: Options) -> Result<()> {
126126
rm_permission_files(&options.identifier, &permissions_dir)?;
127127
}
128128

129-
if let Some(tauri_dir) = tauri_dir_opt() {
129+
if let Some(tauri_dir) = resolve_tauri_dir() {
130130
let capabilities_dir = tauri_dir.join("capabilities");
131131
if capabilities_dir.exists() {
132132
rm_permission_from_capabilities(&options.identifier, &capabilities_dir)?;

tooling/cli/src/add.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use regex::Regex;
99
use crate::{
1010
acl,
1111
helpers::{
12-
app_paths::{app_dir, tauri_dir},
12+
app_paths::{resolve_app_dir, tauri_dir},
1313
cargo,
1414
npm::PackageManager,
1515
},
@@ -92,6 +92,8 @@ pub struct Options {
9292
}
9393

9494
pub fn command(options: Options) -> Result<()> {
95+
crate::helpers::app_paths::resolve();
96+
9597
let (plugin, version) = options
9698
.plugin
9799
.split_once('@')
@@ -105,6 +107,7 @@ pub fn command(options: Options) -> Result<()> {
105107
let mut plugins = plugins();
106108
let metadata = plugins.remove(plugin).unwrap_or_default();
107109

110+
let app_dir = resolve_app_dir();
108111
let tauri_dir = tauri_dir();
109112

110113
let target_str = metadata
@@ -122,14 +125,12 @@ pub fn command(options: Options) -> Result<()> {
122125
branch: options.branch.as_deref(),
123126
rev: options.rev.as_deref(),
124127
tag: options.tag.as_deref(),
125-
cwd: Some(&tauri_dir),
128+
cwd: Some(tauri_dir),
126129
target: target_str,
127130
})?;
128131

129132
if !metadata.rust_only {
130-
if let Some(manager) = std::panic::catch_unwind(app_dir)
131-
.map(Some)
132-
.unwrap_or_default()
133+
if let Some(manager) = app_dir
133134
.map(PackageManager::from_project)
134135
.and_then(|managers| managers.into_iter().next())
135136
{
@@ -149,7 +150,7 @@ pub fn command(options: Options) -> Result<()> {
149150
(None, None, None, None) => npm_name,
150151
_ => anyhow::bail!("Only one of --tag, --rev and --branch can be specified"),
151152
};
152-
manager.install(&[npm_spec], &tauri_dir)?;
153+
manager.install(&[npm_spec], tauri_dir)?;
153154
}
154155

155156
let _ = acl::permission::add::command(acl::permission::add::Options {
@@ -193,7 +194,7 @@ pub fn command(options: Options) -> Result<()> {
193194
log::info!("Running `cargo fmt`...");
194195
let _ = Command::new("cargo")
195196
.arg("fmt")
196-
.current_dir(&tauri_dir)
197+
.current_dir(tauri_dir)
197198
.status();
198199
}
199200

tooling/cli/src/build.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ pub struct Options {
5858
}
5959

6060
pub fn command(mut options: Options, verbosity: u8) -> Result<()> {
61+
crate::helpers::app_paths::resolve();
62+
6163
let ci = options.ci;
6264

6365
let target = options

tooling/cli/src/bundle.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ impl From<crate::build::Options> for Options {
9494
}
9595

9696
pub fn command(options: Options, verbosity: u8) -> crate::Result<()> {
97+
crate::helpers::app_paths::resolve();
98+
9799
let ci = options.ci;
98100

99101
let target = options
@@ -133,6 +135,7 @@ pub fn command(options: Options, verbosity: u8) -> crate::Result<()> {
133135
)
134136
}
135137

138+
#[allow(clippy::too_many_arguments)]
136139
pub fn bundle<A: AppSettings>(
137140
options: &Options,
138141
verbosity: u8,

0 commit comments

Comments
 (0)