12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- use crate::plugin::PluginManager;
- use super::*;
- /// Build the Rust WASM app and all of its assets.
- #[derive(Clone, Debug, Parser)]
- #[clap(name = "build")]
- pub struct Build {
- #[clap(flatten)]
- pub build: ConfigOptsBuild,
- }
- impl Build {
- pub fn build(self) -> Result<()> {
- let mut crate_config = crate::CrateConfig::new()?;
- // 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());
- }
- if self.build.profile.is_some() {
- crate_config.set_profile(self.build.profile.unwrap());
- }
- if self.build.features.is_some() {
- crate_config.set_features(self.build.features.unwrap());
- }
- let platform = self.build.platform.unwrap_or_else(|| {
- crate_config
- .dioxus_config
- .application
- .default_platform
- .clone()
- });
- let _ = PluginManager::on_build_start(&crate_config, &platform);
- match platform.as_str() {
- "web" => {
- crate::builder::build(&crate_config, false)?;
- }
- "desktop" => {
- crate::builder::build_desktop(&crate_config, false)?;
- }
- _ => {
- return custom_error!("Unsupported platform target.");
- }
- }
- let temp = gen_page(&crate_config.dioxus_config, false);
- let mut file = std::fs::File::create(
- crate_config
- .crate_dir
- .join(
- crate_config
- .dioxus_config
- .application
- .out_dir
- .clone()
- .unwrap_or_else(|| PathBuf::from("dist")),
- )
- .join("index.html"),
- )?;
- file.write_all(temp.as_bytes())?;
- let _ = PluginManager::on_build_finish(&crate_config, &platform);
- Ok(())
- }
- }
|