search for first valid platform in features

This commit is contained in:
rtretter committed 2024-03-06 21:38:11 +01:00
1 parent f62c81ea0d
commit 3ffb1facf3
1 file changed
+5 -9
+5 -9
View File
@@ -2,8 +2,8 @@ use dioxus_cli_config::Platform;
use manganis_cli_support::AssetManifest; use manganis_cli_support::AssetManifest;
use super::*; use super::*;
use cargo_toml::Dependency::{Detailed, Inherited, Simple};
use std::{fs::create_dir_all, io::Write, path::PathBuf}; use std::{fs::create_dir_all, io::Write, path::PathBuf};
use cargo_toml::Dependency::{Simple, Inherited, Detailed};
/// Run the WASM project on dev-server /// Run the WASM project on dev-server
#[derive(Clone, Debug, Parser)] #[derive(Clone, Debug, Parser)]
@@ -42,27 +42,23 @@ impl Serve {
crate_config.set_cargo_args(self.serve.cargo_args); crate_config.set_cargo_args(self.serve.cargo_args);
let mut platform = self let mut platform = self.serve.platform;
.serve
.platform;
if platform.is_none() { if platform.is_none() {
if let Some(dependency) = &crate_config.manifest.dependencies.get("dioxus") { if let Some(dependency) = &crate_config.manifest.dependencies.get("dioxus") {
let features = match dependency { let features = match dependency {
Inherited(detail) => detail.features.to_vec(), Inherited(detail) => detail.features.to_vec(),
Detailed(detail) => detail.features.to_vec(), Detailed(detail) => detail.features.to_vec(),
Simple(_) => vec![] Simple(_) => vec![],
}; };
platform = features platform = features
.iter() .iter()
.next() .find_map(|platform| serde_json::from_str(&format!(r#""{}""#, platform)).ok());
.and_then(|first_feature| serde_json::from_str(&format!(r#""{}""#, first_feature)).ok());
} }
} }
let platform = platform let platform = platform.unwrap_or(crate_config.dioxus_config.application.default_platform);
.unwrap_or(crate_config.dioxus_config.application.default_platform);
match platform { match platform {
Platform::Web => { Platform::Web => {