Explorar o código

feat: add `default_platform` config

mrxiaozhuox %!s(int64=3) %!d(string=hai) anos
pai
achega
59ebb9ec11
Modificáronse 5 ficheiros con 39 adicións e 18 borrados
  1. 8 7
      src/assets/dioxus.toml
  2. 9 1
      src/cli/build/mod.rs
  3. 6 6
      src/cli/cfg.rs
  4. 14 2
      src/cli/serve/mod.rs
  5. 2 2
      src/config.rs

+ 8 - 7
src/assets/dioxus.toml

@@ -1,23 +1,24 @@
 [application]
 
-# App (Project) Name
+# dioxus project name
 name = "{{project-name}}"
 
-# Dioxus App Support Platform
-# desktop, web, mobile, ssr
-platforms = ["web"]
+# default platfrom
+# you can also use `dioxus serve/build --platform XXX` to use other platform
+# value: web | desktop
+default_platform = "web"
 
 # Web `build` & `serve` dist path
 out_dir = "dist"
 
+# resource (static) file folder
+public_dir = "public"
+
 [web.app]
 
 # HTML title tag content
 title = "dioxus | ⛺"
 
-# resource (static) file folder
-public_dir = "public"
-
 [web.watcher]
 
 watch_path = ["src"]

+ 9 - 1
src/cli/build/mod.rs

@@ -22,7 +22,15 @@ impl Build {
             crate_config.as_example(self.build.example.unwrap());
         }
 
-        match self.build.platform.as_str() {
+        let platform = self.build.platform.unwrap_or_else(|| {
+            crate_config
+                .dioxus_config
+                .application
+                .default_platform
+                .clone()
+        });
+
+        match platform.as_str() {
             "web" => {
                 crate::builder::build(&crate_config)?;
             }

+ 6 - 6
src/cli/cfg.rs

@@ -19,9 +19,9 @@ pub struct ConfigOptsBuild {
     #[structopt(long)]
     pub example: Option<String>,
 
-    /// Build platform: support Web & Desktop [default: "web"]
-    #[structopt(long, default_value = "web")]
-    pub platform: String,
+    /// Build platform: support Web & Desktop [default: "default_platform"]
+    #[structopt(long)]
+    pub platform: Option<String>,
 }
 
 #[derive(Clone, Debug, Default, Deserialize, StructOpt)]
@@ -39,9 +39,9 @@ pub struct ConfigOptsServe {
     #[serde(default)]
     pub release: bool,
 
-    /// Build platform: support Web & Desktop [default: "web"]
-    #[structopt(long, default_value = "web")]
-    pub platform: String,
+    /// Build platform: support Web & Desktop [default: "default_platform"]
+    #[structopt(long)]
+    pub platform: Option<String>,
 }
 
 /// Ensure the given value for `--public-url` is formatted correctly.

+ 14 - 2
src/cli/serve/mod.rs

@@ -1,5 +1,9 @@
 use crate::{cfg::ConfigOptsServe, gen_page, server, CrateConfig};
-use std::{io::Write, path::PathBuf, process::{Command, Stdio}};
+use std::{
+    io::Write,
+    path::PathBuf,
+    process::{Command, Stdio},
+};
 use structopt::StructOpt;
 
 /// Run the WASM project on dev-server
@@ -21,7 +25,15 @@ impl Serve {
             crate_config.as_example(self.serve.example.unwrap());
         }
 
-        match self.serve.platform.as_str() {
+        let platform = self.serve.platform.unwrap_or_else(|| {
+            crate_config
+                .dioxus_config
+                .application
+                .default_platform
+                .clone()
+        });
+
+        match platform.as_str() {
             "web" => {
                 crate::builder::build(&crate_config)?;
             }

+ 2 - 2
src/config.rs

@@ -31,7 +31,7 @@ impl Default for DioxusConfig {
         Self {
             application: ApplicationConfig {
                 name: "dioxus".into(),
-                platforms: vec![String::from("web")],
+                default_platform: "web".to_string(),
                 out_dir: Some(PathBuf::from("dist")),
             },
             web: WebConfig {
@@ -59,7 +59,7 @@ impl Default for DioxusConfig {
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct ApplicationConfig {
     pub name: String,
-    pub platforms: Vec<String>,
+    pub default_platform: String,
     pub out_dir: Option<PathBuf>,
 }