Skip to content

Commit 894a8d0

Browse files
authored
refactor(cli): use temp file to communicate IPC websocket address (#6219)
1 parent 481d9de commit 894a8d0

File tree

8 files changed

+68
-19
lines changed

8 files changed

+68
-19
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"cli.rs": patch
3+
"cli.js": patch
4+
---
5+
6+
Use temp file instead of environment variable to pass CLI IPC websocket address to the IDE.

tooling/cli/src/mobile/android.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ pub fn with_config<T>(
161161
let tauri_config = get_tauri_config(None)?;
162162
let tauri_config_guard = tauri_config.lock().unwrap();
163163
let tauri_config_ = tauri_config_guard.as_ref().unwrap();
164-
let cli_options = cli_options.unwrap_or_else(read_options);
164+
let cli_options =
165+
cli_options.unwrap_or_else(|| read_options(&tauri_config_.tauri.bundle.identifier));
165166
let (app, config, metadata) = get_config(None, tauri_config_, &cli_options);
166167
(app, config, metadata, cli_options)
167168
};

tooling/cli/src/mobile/android/build.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{
44
};
55
use crate::{
66
build::Options as BuildOptions,
7-
helpers::flock,
7+
helpers::{config::get as get_config, flock},
88
interface::{AppSettings, Interface, Options as InterfaceOptions},
99
mobile::{write_options, CliOptions},
1010
Result,
@@ -139,7 +139,17 @@ fn run_build(
139139
noise_level,
140140
vars: Default::default(),
141141
};
142-
let _handle = write_options(cli_options, &mut env.base)?;
142+
let _handle = write_options(
143+
&get_config(options.config.as_deref())?
144+
.lock()
145+
.unwrap()
146+
.as_ref()
147+
.unwrap()
148+
.tauri
149+
.bundle
150+
.identifier,
151+
cli_options,
152+
)?;
143153

144154
options
145155
.features

tooling/cli/src/mobile/android/dev.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{
44
};
55
use crate::{
66
dev::Options as DevOptions,
7-
helpers::flock,
7+
helpers::{config::get as get_config, flock},
88
interface::{AppSettings, Interface, MobileOptions, Options as InterfaceOptions},
99
mobile::{write_options, CliOptions, DevChild, DevProcess},
1010
Result,
@@ -148,14 +148,23 @@ fn run_dev(
148148
no_watch: options.no_watch,
149149
},
150150
|options| {
151-
let mut env = env.clone();
152151
let cli_options = CliOptions {
153152
features: options.features.clone(),
154153
args: options.args.clone(),
155154
noise_level,
156155
vars: Default::default(),
157156
};
158-
let _handle = write_options(cli_options, &mut env.base)?;
157+
let _handle = write_options(
158+
&get_config(options.config.as_deref())?
159+
.lock()
160+
.unwrap()
161+
.as_ref()
162+
.unwrap()
163+
.tauri
164+
.bundle
165+
.identifier,
166+
cli_options,
167+
)?;
159168

160169
if open {
161170
open_and_wait(config, &env)

tooling/cli/src/mobile/ios.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ fn with_config<T>(
149149
let tauri_config = get_tauri_config(None)?;
150150
let tauri_config_guard = tauri_config.lock().unwrap();
151151
let tauri_config_ = tauri_config_guard.as_ref().unwrap();
152-
let cli_options = cli_options.unwrap_or_else(read_options);
152+
let cli_options =
153+
cli_options.unwrap_or_else(|| read_options(&tauri_config_.tauri.bundle.identifier));
153154
let (app, config, metadata) = get_config(None, tauri_config_, &cli_options);
154155
(app, config, metadata, cli_options)
155156
};

tooling/cli/src/mobile/ios/build.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{
44
};
55
use crate::{
66
build::Options as BuildOptions,
7-
helpers::flock,
7+
helpers::{config::get as get_config, flock},
88
interface::{AppSettings, Interface, Options as InterfaceOptions},
99
mobile::{write_options, CliOptions},
1010
Result,
@@ -122,7 +122,17 @@ fn run_build(
122122
noise_level,
123123
vars: Default::default(),
124124
};
125-
let _handle = write_options(cli_options, env)?;
125+
let _handle = write_options(
126+
&get_config(options.config.as_deref())?
127+
.lock()
128+
.unwrap()
129+
.as_ref()
130+
.unwrap()
131+
.tauri
132+
.bundle
133+
.identifier,
134+
cli_options,
135+
)?;
126136

127137
options
128138
.features

tooling/cli/src/mobile/ios/dev.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{
44
};
55
use crate::{
66
dev::Options as DevOptions,
7-
helpers::flock,
7+
helpers::{config::get as get_config, flock},
88
interface::{AppSettings, Interface, MobileOptions, Options as InterfaceOptions},
99
mobile::{write_options, CliOptions, DevChild, DevProcess},
1010
Result,
@@ -156,14 +156,23 @@ fn run_dev(
156156
no_watch: options.no_watch,
157157
},
158158
|options| {
159-
let mut env = env.clone();
160159
let cli_options = CliOptions {
161160
features: options.features.clone(),
162161
args: options.args.clone(),
163162
noise_level,
164163
vars: Default::default(),
165164
};
166-
let _handle = write_options(cli_options, &mut env)?;
165+
let _handle = write_options(
166+
&get_config(options.config.as_deref())?
167+
.lock()
168+
.unwrap()
169+
.as_ref()
170+
.unwrap()
171+
.tauri
172+
.bundle
173+
.identifier,
174+
cli_options,
175+
)?;
167176

168177
if open {
169178
open_and_wait(config, &env)

tooling/cli/src/mobile/mod.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,10 @@ use shared_child::SharedChild;
2222

2323
use std::{
2424
collections::HashMap,
25-
env::set_var,
26-
env::var,
25+
env::{set_var, temp_dir},
2726
ffi::OsString,
2827
fmt::Write,
29-
fs::{create_dir_all, remove_dir_all},
28+
fs::{create_dir_all, read_to_string, remove_dir_all, write},
3029
net::SocketAddr,
3130
path::PathBuf,
3231
process::ExitStatus,
@@ -196,8 +195,8 @@ fn env() -> Result<Env, EnvError> {
196195

197196
/// Writes CLI options to be used later on the Xcode and Android Studio build commands
198197
pub fn write_options(
198+
identifier: &str,
199199
mut options: CliOptions,
200-
env: &mut Env,
201200
) -> crate::Result<(Runtime, ServerHandle)> {
202201
options.vars.extend(env_vars());
203202

@@ -215,20 +214,24 @@ pub fn write_options(
215214
});
216215
let (handle, addr) = r?;
217216

218-
env.insert_env_var("TAURI_OPTIONS_SERVER_ADDR".into(), addr.to_string().into());
217+
write(
218+
temp_dir().join(format!("{identifier}-server-addr")),
219+
addr.to_string(),
220+
)?;
219221

220222
Ok((runtime, handle))
221223
}
222224

223-
fn read_options() -> CliOptions {
225+
fn read_options(identifier: &str) -> CliOptions {
224226
let runtime = tokio::runtime::Runtime::new().unwrap();
225227
let options = runtime
226228
.block_on(async move {
227229
let (tx, rx) = WsTransportClientBuilder::default()
228230
.build(
229231
format!(
230232
"ws://{}",
231-
var("TAURI_OPTIONS_SERVER_ADDR").expect("missing addr environment variable")
233+
read_to_string(temp_dir().join(format!("{identifier}-server-addr")))
234+
.expect("missing addr file")
232235
)
233236
.parse()
234237
.unwrap(),

0 commit comments

Comments
 (0)