Skip to content

Commit cc9bed1

Browse files
committed
Use enum for BuildMode
1 parent c940ad5 commit cc9bed1

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
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: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ use linera_client::{
1919
util,
2020
};
2121
use linera_rpc::config::CrossChainConfig;
22-
use linera_service::util::{
23-
DEFAULT_PAUSE_AFTER_GQL_MUTATIONS_SECS, DEFAULT_PAUSE_AFTER_LINERA_SERVICE_SECS,
22+
use linera_service::{
23+
cli_wrappers::local_kubernetes_net::BuildMode,
24+
util::{DEFAULT_PAUSE_AFTER_GQL_MUTATIONS_SECS, DEFAULT_PAUSE_AFTER_LINERA_SERVICE_SECS},
2425
};
2526

2627
#[derive(Clone, clap::Subcommand)]
@@ -921,7 +922,7 @@ pub enum NetCommand {
921922
/// The build mode to use.
922923
#[cfg(feature = "kubernetes")]
923924
#[arg(long, default_value = "release")]
924-
build_mode: String,
925+
build_mode: BuildMode,
925926

926927
/// Run with a specific path where the wallet and validator input files are.
927928
/// 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)