Bläddra i källkod

added automatic platform detection to cli if none is passed

rtretter 1 år sedan
förälder
incheckning
f62c81ea0d
3 ändrade filer med 23 tillägg och 5 borttagningar
  1. 1 1
      Cargo.lock
  2. 1 1
      packages/cli-config/Cargo.toml
  3. 21 3
      packages/cli/src/cli/serve.rs

+ 1 - 1
Cargo.lock

@@ -2326,7 +2326,7 @@ dependencies = [
 name = "dioxus-cli-config"
 version = "0.5.0-alpha.0"
 dependencies = [
- "cargo_toml 0.16.3",
+ "cargo_toml 0.18.0",
  "clap 4.4.18",
  "once_cell",
  "serde",

+ 1 - 1
packages/cli-config/Cargo.toml

@@ -13,7 +13,7 @@ clap = { version = "4.2", features = ["derive"], optional = true }
 serde = { version = "1.0.136", features = ["derive"] }
 serde_json = "1.0.79"
 toml = { workspace = true, optional = true }
-cargo_toml = { version = "0.16.0", optional = true }
+cargo_toml = { version = "0.18.0", optional = true }
 once_cell = "1.18.0"
 tracing = { workspace = true }
 

+ 21 - 3
packages/cli/src/cli/serve.rs

@@ -3,6 +3,7 @@ use manganis_cli_support::AssetManifest;
 
 use super::*;
 use std::{fs::create_dir_all, io::Write, path::PathBuf};
+use cargo_toml::Dependency::{Simple, Inherited, Detailed};
 
 /// Run the WASM project on dev-server
 #[derive(Clone, Debug, Parser)]
@@ -41,11 +42,28 @@ impl Serve {
 
         crate_config.set_cargo_args(self.serve.cargo_args);
 
-        let platform = self
+        let mut platform = self
             .serve
-            .platform
-            .unwrap_or(crate_config.dioxus_config.application.default_platform);
+            .platform;
+
+        if platform.is_none() {
+            if let Some(dependency) = &crate_config.manifest.dependencies.get("dioxus") {
+                let features = match dependency {
+                    Inherited(detail) => detail.features.to_vec(),
+                    Detailed(detail) => detail.features.to_vec(),
+                    Simple(_) => vec![]
+                };
+
+                platform = features
+                    .iter()
+                    .next()
+                    .and_then(|first_feature| serde_json::from_str(&format!(r#""{}""#, first_feature)).ok());
+            }
+        }
 
+        let platform = platform
+            .unwrap_or(crate_config.dioxus_config.application.default_platform);
+        
         match platform {
             Platform::Web => {
                 // start the develop server