Skip to content

Commit 47d73eb

Browse files
committed
Use enum for BuildMode
1 parent 94539ed commit 47d73eb

File tree

4 files changed

+35
-13
lines changed

4 files changed

+35
-13
lines changed

linera-service/src/cli_wrappers/docker.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ use linera_base::command::{current_binary_parent, CommandExt};
88
use pathdiff::diff_paths;
99
use tokio::process::Command;
1010

11+
use crate::cli_wrappers::local_kubernetes_net::BuildMode;
12+
1113
pub struct DockerImage {
1214
name: String,
1315
}
@@ -21,7 +23,7 @@ impl DockerImage {
2123
name: &str,
2224
binaries: &BuildArg,
2325
github_root: &PathBuf,
24-
build_mode: &str,
26+
build_mode: &BuildMode,
2527
) -> Result<Self> {
2628
let build_arg = match binaries {
2729
BuildArg::Directory(bin_path) => {
@@ -63,16 +65,13 @@ impl DockerImage {
6365
.args(["--build-arg", &build_arg]);
6466

6567
match build_mode {
66-
"release" => {
68+
BuildMode::Release => {
6769
command.args(["--build-arg", "build_flag=--release"]);
6870
command.args(["--build-arg", "build_folder=release"]);
6971
}
70-
"debug" => {
72+
BuildMode::Debug => {
7173
command.args(["--build-arg", "build_folder=debug"]);
7274
}
73-
_ => {
74-
return Err(anyhow::anyhow!("Invalid build mode: {}", build_mode));
75-
}
7675
}
7776

7877
#[cfg(not(with_testing))]

linera-service/src/cli_wrappers/local_kubernetes_net.rs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,27 @@ static SHARED_LOCAL_KUBERNETES_TESTING_NET: OnceCell<(
3737
ClientWrapper,
3838
)> = OnceCell::const_new();
3939

40+
#[derive(Clone, clap::Parser, clap::ValueEnum, Debug, Default)]
41+
pub enum BuildMode {
42+
Debug,
43+
#[default]
44+
Release,
45+
}
46+
47+
impl std::str::FromStr for BuildMode {
48+
type Err = String;
49+
50+
fn from_str(s: &str) -> Result<Self, Self::Err> {
51+
clap::ValueEnum::from_str(s, true)
52+
}
53+
}
54+
55+
impl std::fmt::Display for BuildMode {
56+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
57+
write!(f, "{:?}", self)
58+
}
59+
}
60+
4061
/// The information needed to start a [`LocalKubernetesNet`].
4162
pub struct LocalKubernetesNetConfig {
4263
pub network: Network,
@@ -48,7 +69,7 @@ pub struct LocalKubernetesNetConfig {
4869
pub binaries: BuildArg,
4970
pub no_build: bool,
5071
pub docker_image_name: String,
51-
pub build_mode: String,
72+
pub build_mode: BuildMode,
5273
pub policy_config: ResourceControlPolicyConfig,
5374
}
5475

@@ -67,7 +88,7 @@ pub struct LocalKubernetesNet {
6788
binaries: BuildArg,
6889
no_build: bool,
6990
docker_image_name: String,
70-
build_mode: String,
91+
build_mode: BuildMode,
7192
kubectl_instance: Arc<Mutex<KubectlInstance>>,
7293
kind_clusters: Vec<KindCluster>,
7394
num_initial_validators: usize,
@@ -104,7 +125,7 @@ impl SharedLocalKubernetesNetTestingConfig {
104125
binaries,
105126
no_build: false,
106127
docker_image_name: String::from("linera:latest"),
107-
build_mode: String::from("release"),
128+
build_mode: BuildMode::Release,
108129
policy_config: ResourceControlPolicyConfig::Testnet,
109130
})
110131
}
@@ -312,7 +333,7 @@ impl LocalKubernetesNet {
312333
binaries: BuildArg,
313334
no_build: bool,
314335
docker_image_name: String,
315-
build_mode: String,
336+
build_mode: BuildMode,
316337
kubectl_instance: KubectlInstance,
317338
kind_clusters: Vec<KindCluster>,
318339
num_initial_validators: usize,

linera-service/src/linera/command.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ use linera_client::{
1919
util,
2020
};
2121
use linera_rpc::config::CrossChainConfig;
22+
#[cfg(feature = "kubernetes")]
23+
use linera_service::cli_wrappers::local_kubernetes_net::BuildMode;
2224
use linera_service::util::{
2325
DEFAULT_PAUSE_AFTER_GQL_MUTATIONS_SECS, DEFAULT_PAUSE_AFTER_LINERA_SERVICE_SECS,
2426
};
@@ -921,7 +923,7 @@ pub enum NetCommand {
921923
/// The build mode to use.
922924
#[cfg(feature = "kubernetes")]
923925
#[arg(long, default_value = "release")]
924-
build_mode: String,
926+
build_mode: BuildMode,
925927

926928
/// Run with a specific path where the wallet and validator input files are.
927929
/// If none, then a temporary directory is created.

linera-service/src/linera/net_up_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use tokio_util::sync::CancellationToken;
2525
use tracing::info;
2626
#[cfg(feature = "kubernetes")]
2727
use {
28-
linera_service::cli_wrappers::local_kubernetes_net::LocalKubernetesNetConfig,
28+
linera_service::cli_wrappers::local_kubernetes_net::{BuildMode, LocalKubernetesNetConfig},
2929
std::path::PathBuf,
3030
};
3131

@@ -115,7 +115,7 @@ pub async fn handle_net_up_kubernetes(
115115
binaries: &Option<Option<PathBuf>>,
116116
no_build: bool,
117117
docker_image_name: String,
118-
build_mode: String,
118+
build_mode: BuildMode,
119119
policy_config: ResourceControlPolicyConfig,
120120
with_faucet: bool,
121121
faucet_chain: Option<u32>,

0 commit comments

Comments
 (0)