From ed31a0c4135e5e16af8717da3e84bfdaee1d271b Mon Sep 17 00:00:00 2001
From: wirednkod <wirednkod@gmail.com>
Date: Fri, 6 Oct 2023 10:53:08 +0300
Subject: [PATCH] Fix the command to be used in case default_command is missing

---
 crates/configuration/src/network.rs       |  7 +++++--
 crates/configuration/src/parachain.rs     | 14 +++++---------
 crates/configuration/src/relaychain.rs    |  1 -
 crates/examples/examples/0001-simple.toml |  2 +-
 4 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/crates/configuration/src/network.rs b/crates/configuration/src/network.rs
index 6dc9495..6efda8c 100644
--- a/crates/configuration/src/network.rs
+++ b/crates/configuration/src/network.rs
@@ -81,9 +81,12 @@ impl NetworkConfig {
         }
 
         // retrieve the defaults relaychain for assigning to nodes if needed
-        let relaychain_default_command: Option<Command> =
-            network_config.relaychain().default_command().cloned() | network_config.relaychain().command().cloned();
+        let mut relaychain_default_command: Option<Command> =
+            network_config.relaychain().default_command().cloned();
 
+        if relaychain_default_command.is_none() {
+            relaychain_default_command = network_config.relaychain().command().cloned();
+        }
         let relaychain_default_image: Option<Image> =
             network_config.relaychain().default_image().cloned();
 
diff --git a/crates/configuration/src/parachain.rs b/crates/configuration/src/parachain.rs
index bc2989b..ad31a57 100644
--- a/crates/configuration/src/parachain.rs
+++ b/crates/configuration/src/parachain.rs
@@ -118,8 +118,8 @@ pub struct ParachainConfig {
     genesis_state_path: Option<AssetLocation>,
     genesis_state_generator: Option<Command>,
     chain_spec_path: Option<AssetLocation>,
-    #[serde(rename = "cumulus_based")]
-    is_cumulus_based: Option<bool>,
+    #[serde(rename = "cumulus_based", default = "default_as_true")]
+    is_cumulus_based: bool,
     #[serde(skip_serializing_if = "std::vec::Vec::is_empty", default)]
     bootnodes_addresses: Vec<Multiaddr>,
     genesis_overrides: Option<serde_json::Value>,
@@ -210,11 +210,7 @@ impl ParachainConfig {
 
     /// Whether the parachain is based on cumulus.
     pub fn is_cumulus_based(&self) -> bool {
-        if let Some(true) = self.is_cumulus_based {
-            true
-        } else {
-            false
-        }
+        self.is_cumulus_based
     }
 
     /// The bootnodes addresses the collators will connect to.
@@ -262,7 +258,7 @@ impl Default for ParachainConfigBuilder<Initial> {
                 genesis_state_generator: None,
                 genesis_overrides: None,
                 chain_spec_path: None,
-                is_cumulus_based: Some(true),
+                is_cumulus_based: true,
                 bootnodes_addresses: vec![],
                 collators: vec![],
             },
@@ -579,7 +575,7 @@ impl ParachainConfigBuilder<WithId> {
     pub fn cumulus_based(self, choice: bool) -> Self {
         Self::transition(
             ParachainConfig {
-                is_cumulus_based: Some(choice),
+                is_cumulus_based: choice,
                 ..self.config
             },
             self.validation_context,
diff --git a/crates/configuration/src/relaychain.rs b/crates/configuration/src/relaychain.rs
index cbf6fa8..f5bc906 100644
--- a/crates/configuration/src/relaychain.rs
+++ b/crates/configuration/src/relaychain.rs
@@ -72,7 +72,6 @@ impl RelaychainConfig {
         self.command.as_ref()
     }
 
-
     /// The number of `random nominators` to create for chains using staking, this is used in tandem with `max_nominations` to simulate the amount of nominators and nominations.
     pub fn random_nominators_count(&self) -> Option<u32> {
         self.random_nominators_count
diff --git a/crates/examples/examples/0001-simple.toml b/crates/examples/examples/0001-simple.toml
index 020072c..46168b4 100644
--- a/crates/examples/examples/0001-simple.toml
+++ b/crates/examples/examples/0001-simple.toml
@@ -4,8 +4,8 @@ node_spawn_timeout = 1000
 
 [relaychain]
 default_image = "docker.io/parity/polkadot-sdk:latest"
+command = "polkadot"
 chain = "rococo-local"
-default_command = "polkadot"
 
   [[relaychain.nodes]]
   name = "alice"
-- 
GitLab