Merge branch 'master' into cli-config-library
This commit is contained in:
commit
23509ada9f
285 files changed
+13088
-4835
No files matched your search
@@ -1,5 +1,8 @@
|
||||
#[cfg(feature = "plugin")]
|
||||
use crate::plugin::PluginManager;
|
||||
use crate::server::fullstack::FullstackServerEnvGuard;
|
||||
use crate::server::fullstack::FullstackWebEnvGuard;
|
||||
use crate::WebAssetConfigDropGuard;
|
||||
use dioxus_cli_config::Platform;
|
||||
|
||||
use super::*;
|
||||
@@ -13,23 +16,26 @@ pub struct Build {
|
||||
}
|
||||
|
||||
impl Build {
|
||||
pub fn build(self, bin: Option<PathBuf>) -> Result<()> {
|
||||
pub fn build(self, bin: Option<PathBuf>, target_dir: Option<&std::path::Path>) -> Result<()> {
|
||||
let mut crate_config = dioxus_cli_config::CrateConfig::new(bin)?;
|
||||
if let Some(target_dir) = target_dir {
|
||||
crate_config.target_dir = target_dir.to_path_buf();
|
||||
}
|
||||
|
||||
// change the release state.
|
||||
crate_config.with_release(self.build.release);
|
||||
crate_config.with_verbose(self.build.verbose);
|
||||
|
||||
if self.build.example.is_some() {
|
||||
crate_config.as_example(self.build.example.unwrap());
|
||||
crate_config.as_example(self.build.example.clone().unwrap());
|
||||
}
|
||||
|
||||
if self.build.profile.is_some() {
|
||||
crate_config.set_profile(self.build.profile.unwrap());
|
||||
crate_config.set_profile(self.build.profile.clone().unwrap());
|
||||
}
|
||||
|
||||
if self.build.features.is_some() {
|
||||
crate_config.set_features(self.build.features.unwrap());
|
||||
crate_config.set_features(self.build.features.clone().unwrap());
|
||||
}
|
||||
|
||||
let platform = self
|
||||
@@ -37,19 +43,56 @@ impl Build {
|
||||
.platform
|
||||
.unwrap_or(crate_config.dioxus_config.application.default_platform);
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
let _ = PluginManager::on_build_start(&crate_config, &platform);
|
||||
if let Some(target) = self.build.target.clone() {
|
||||
crate_config.set_target(target);
|
||||
}
|
||||
|
||||
crate_config.set_cargo_args(self.build.cargo_args.clone());
|
||||
|
||||
// #[cfg(feature = "plugin")]
|
||||
// let _ = PluginManager::on_build_start(&crate_config, &platform);
|
||||
|
||||
match platform {
|
||||
Platform::Web => {
|
||||
crate::builder::build(&crate_config, true)?;
|
||||
crate::builder::build(&crate_config, false, self.build.skip_assets)?;
|
||||
}
|
||||
Platform::Desktop => {
|
||||
crate::builder::build_desktop(&crate_config, false)?;
|
||||
crate::builder::build_desktop(&crate_config, false, self.build.skip_assets)?;
|
||||
}
|
||||
Platform::Fullstack => {
|
||||
// Fullstack mode must be built with web configs on the desktop (server) binary as well as the web binary
|
||||
let _config = WebAssetConfigDropGuard::new();
|
||||
{
|
||||
let mut web_config = crate_config.clone();
|
||||
let _gaurd = FullstackWebEnvGuard::new(&self.build);
|
||||
let web_feature = self.build.client_feature;
|
||||
let features = &mut web_config.features;
|
||||
match features {
|
||||
Some(features) => {
|
||||
features.push(web_feature);
|
||||
}
|
||||
None => web_config.features = Some(vec![web_feature]),
|
||||
};
|
||||
crate::builder::build(&crate_config, false, self.build.skip_assets)?;
|
||||
}
|
||||
{
|
||||
let mut desktop_config = crate_config.clone();
|
||||
let desktop_feature = self.build.server_feature;
|
||||
let features = &mut desktop_config.features;
|
||||
match features {
|
||||
Some(features) => {
|
||||
features.push(desktop_feature);
|
||||
}
|
||||
None => desktop_config.features = Some(vec![desktop_feature]),
|
||||
};
|
||||
let _gaurd =
|
||||
FullstackServerEnvGuard::new(self.build.force_debug, self.build.release);
|
||||
crate::builder::build_desktop(&desktop_config, false, self.build.skip_assets)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let temp = gen_page(&crate_config.dioxus_config, false);
|
||||
let temp = gen_page(&crate_config, false, self.build.skip_assets);
|
||||
|
||||
let mut file = std::fs::File::create(
|
||||
crate_config
|
||||
@@ -59,8 +102,8 @@ impl Build {
|
||||
)?;
|
||||
file.write_all(temp.as_bytes())?;
|
||||
|
||||
#[cfg(feature = "plugin")]
|
||||
let _ = PluginManager::on_build_finish(&crate_config, &platform);
|
||||
// #[cfg(feature = "plugin")]
|
||||
// let _ = PluginManager::on_build_finish(&crate_config, &platform);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user