Browse Source

fix: cli pakage name search (#3561)

Anakael 5 months ago
parent
commit
36522cf3ea
1 changed files with 24 additions and 1 deletions
  1. 24 1
      packages/cli/src/dioxus_crate.rs

+ 24 - 1
packages/cli/src/dioxus_crate.rs

@@ -45,13 +45,36 @@ impl DioxusCrate {
             TargetKind::Bin
         };
 
+        let main_package = &krates[package];
+
         let target_name = target
             .example
             .clone()
             .or(target.bin.clone())
+            .or_else(|| {
+                if let Some(default_run) = &main_package.default_run {
+                    return Some(default_run.to_string());
+                }
+
+                let bin_count = main_package
+                    .targets
+                    .iter()
+                    .filter(|x| x.kind.contains(&target_kind))
+                    .count();
+                if bin_count != 1 {
+                    return None;
+                }
+
+                main_package.targets.iter().find_map(|x| {
+                    if x.kind.contains(&target_kind) {
+                        Some(x.name.clone())
+                    } else {
+                        None
+                    }
+                })
+            })
             .unwrap_or(package_name);
 
-        let main_package = &krates[package];
         let target = main_package
             .targets
             .iter()