Skip to content

Commit 8f29a26

Browse files
authored
fix(cli.rs): copy resources and binaries on dev, closes #1298 (#1946)
1 parent 8be35ce commit 8f29a26

File tree

9 files changed

+92
-27
lines changed

9 files changed

+92
-27
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"tauri-bundler": patch
3+
---
4+
5+
The process of copying binaries and resources to `project_out_directory` was moved to the Tauri CLI.

.changes/dev-copy-resources.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"cli.rs": patch
3+
---
4+
5+
Copy resources and binaries to `OUT_DIR` on `tauri dev` command.

tooling/bundler/src/bundle.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ pub fn bundle_project(settings: Settings) -> crate::Result<Vec<Bundle>> {
7373
});
7474
}
7575

76-
settings.copy_resources(settings.project_out_directory())?;
77-
settings.copy_binaries(settings.project_out_directory())?;
78-
7976
print_finished(&bundles)?;
8077

8178
Ok(bundles)

tooling/cli.rs/src/build.rs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// SPDX-License-Identifier: MIT
44

55
use anyhow::Context;
6-
use tauri_bundler::bundle::{bundle_project, PackageType, SettingsBuilder};
6+
use tauri_bundler::bundle::{bundle_project, PackageType};
77

88
use crate::helpers::{
99
app_paths::{app_dir, tauri_dir},
@@ -16,8 +16,6 @@ use crate::helpers::{
1616

1717
use std::{env::set_current_dir, fs::rename, path::PathBuf, process::Command};
1818

19-
mod rust;
20-
2119
#[derive(Default)]
2220
pub struct Build {
2321
runner: Option<String>,
@@ -124,10 +122,10 @@ impl Build {
124122
cargo_features.extend(features);
125123
}
126124

127-
rust::build_project(runner, &self.target, cargo_features, self.debug)
125+
crate::interface::rust::build_project(runner, &self.target, cargo_features, self.debug)
128126
.with_context(|| "failed to build app")?;
129127

130-
let app_settings = rust::AppSettings::new(&config_)?;
128+
let app_settings = crate::interface::rust::AppSettings::new(&config_)?;
131129

132130
let out_dir = app_settings
133131
.get_out_dir(self.debug)
@@ -162,17 +160,8 @@ impl Build {
162160
};
163161
std::fs::write(out_dir.join(filename), vcruntime_msm)?;
164162
}
165-
let mut settings_builder = SettingsBuilder::new()
166-
.package_settings(app_settings.get_package_settings())
167-
.bundle_settings(app_settings.get_bundle_settings(&config_, &manifest)?)
168-
.binaries(app_settings.get_binaries(&config_)?)
169-
.project_out_directory(out_dir);
170-
171-
if self.verbose {
172-
settings_builder = settings_builder.verbose();
173-
}
174163

175-
if let Some(names) = self.bundles {
164+
let package_types = if let Some(names) = self.bundles {
176165
let mut types = vec![];
177166
for name in names {
178167
if name == "none" {
@@ -190,8 +179,7 @@ impl Build {
190179
}
191180
}
192181
}
193-
194-
settings_builder = settings_builder.package_types(types);
182+
Some(types)
195183
} else if let Some(targets) = &config_.tauri.bundle.targets {
196184
let mut types = vec![];
197185
let targets = targets.to_vec();
@@ -209,14 +197,26 @@ impl Build {
209197
}
210198
}
211199
}
212-
settings_builder = settings_builder.package_types(types);
200+
Some(types)
201+
} else {
202+
None
213203
}
214-
}
215-
216-
// Bundle the project
217-
let settings = settings_builder
218-
.build()
219-
.with_context(|| "failed to build bundler settings")?;
204+
} else {
205+
None
206+
};
207+
208+
let settings = crate::interface::get_bundler_settings(
209+
app_settings,
210+
&manifest,
211+
&config_,
212+
&out_dir,
213+
self.verbose,
214+
package_types,
215+
)
216+
.with_context(|| "failed to build bundler settings")?;
217+
218+
settings.copy_resources(&out_dir)?;
219+
settings.copy_binaries(&out_dir)?;
220220

221221
let bundles = bundle_project(settings).with_context(|| "failed to bundle project")?;
222222

tooling/cli.rs/src/dev.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,27 @@ impl Dev {
9797
let config = get_config(merge_config.as_deref())?;
9898
let mut process: Arc<SharedChild>;
9999

100+
let (settings, out_dir) = {
101+
let config_guard = config.lock().unwrap();
102+
let config_ = config_guard.as_ref().unwrap();
103+
let app_settings = crate::interface::rust::AppSettings::new(&config_)?;
104+
let out_dir = app_settings
105+
.get_out_dir(true)
106+
.with_context(|| "failed to get project out directory")?;
107+
let settings = crate::interface::get_bundler_settings(
108+
app_settings,
109+
&Default::default(),
110+
&config_,
111+
&out_dir,
112+
false,
113+
None,
114+
)
115+
.with_context(|| "failed to build bundler settings")?;
116+
(settings, out_dir)
117+
};
118+
settings.copy_resources(&out_dir)?;
119+
settings.copy_binaries(&out_dir)?;
120+
100121
if let Some(before_dev) = &config
101122
.lock()
102123
.unwrap()

tooling/cli.rs/src/helpers/manifest.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use std::{
1717
path::Path,
1818
};
1919

20+
#[derive(Default)]
2021
pub struct Manifest {
2122
pub features: HashSet<String>,
2223
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright 2019-2021 Tauri Programme within The Commons Conservancy
2+
// SPDX-License-Identifier: Apache-2.0
3+
// SPDX-License-Identifier: MIT
4+
5+
pub mod rust;
6+
7+
use std::path::Path;
8+
9+
use crate::helpers::{config::Config, manifest::Manifest};
10+
use tauri_bundler::bundle::{PackageType, Settings, SettingsBuilder};
11+
12+
pub fn get_bundler_settings(
13+
app_settings: rust::AppSettings,
14+
manifest: &Manifest,
15+
config: &Config,
16+
out_dir: &Path,
17+
verbose: bool,
18+
package_types: Option<Vec<PackageType>>,
19+
) -> crate::Result<Settings> {
20+
let mut settings_builder = SettingsBuilder::new()
21+
.package_settings(app_settings.get_package_settings())
22+
.bundle_settings(app_settings.get_bundle_settings(config, manifest)?)
23+
.binaries(app_settings.get_binaries(&config)?)
24+
.project_out_directory(out_dir);
25+
26+
if verbose {
27+
settings_builder = settings_builder.verbose();
28+
}
29+
30+
if let Some(types) = package_types {
31+
settings_builder = settings_builder.package_types(types);
32+
}
33+
34+
settings_builder.build().map_err(Into::into)
35+
}

tooling/cli.rs/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ mod dev;
1212
mod helpers;
1313
mod info;
1414
mod init;
15+
mod interface;
1516
mod sign;
1617

1718
// temporary fork from https://github.com/mitsuhiko/console until 0.14.1+ release

0 commit comments

Comments
 (0)