diff --git a/osdk/src/cli.rs b/osdk/src/cli.rs index 73ca5d565..5fdc6003c 100644 --- a/osdk/src/cli.rs +++ b/osdk/src/cli.rs @@ -129,9 +129,16 @@ pub struct CargoArgs { #[arg( long, help = "The Cargo build profile (built-in candidates are 'dev', 'release', 'test' and 'bench')", - default_value = "dev" + default_value = "dev", + conflicts_with = "release" )] pub profile: String, + #[arg( + long, + help = "Build artifacts in release mode", + conflicts_with = "profile" + )] + pub release: bool, #[arg(long, value_name = "FEATURES", help = "List of features to activate")] pub features: Vec, } diff --git a/osdk/src/commands/new/mod.rs b/osdk/src/commands/new/mod.rs index 7a6160aae..11ba22a8b 100644 --- a/osdk/src/commands/new/mod.rs +++ b/osdk/src/commands/new/mod.rs @@ -43,7 +43,7 @@ fn add_manifest_dependencies(cargo_metadata: &serde_json::Value, crate_name: &st dependencies.as_table_mut().unwrap().extend(aster_frame_dep); let ktest_dep = toml::Table::from_str(&aster_crate_dep("ktest")).unwrap(); dependencies.as_table_mut().unwrap().extend(ktest_dep); - + let content = toml::to_string(&manifest).unwrap(); fs::write(mainfest_path, content).unwrap(); } diff --git a/osdk/src/config_manager/mod.rs b/osdk/src/config_manager/mod.rs index 213e0445f..e411ebae2 100644 --- a/osdk/src/config_manager/mod.rs +++ b/osdk/src/config_manager/mod.rs @@ -38,7 +38,7 @@ pub struct BuildConfig { impl BuildConfig { pub fn parse(args: &BuildArgs) -> Self { - let cargo_args = split_features(&args.cargo_args); + let cargo_args = parse_cargo_args(&args.cargo_args); let mut manifest = load_osdk_manifest(&cargo_args, args.osdk_args.select.as_ref()); apply_cli_args(&mut manifest, &args.osdk_args); try_fill_system_configs(&mut manifest); @@ -58,7 +58,7 @@ pub struct RunConfig { impl RunConfig { pub fn parse(args: &RunArgs) -> Self { - let cargo_args = split_features(&args.cargo_args); + let cargo_args = parse_cargo_args(&args.cargo_args); let mut manifest = load_osdk_manifest(&cargo_args, args.osdk_args.select.as_ref()); apply_cli_args(&mut manifest, &args.osdk_args); try_fill_system_configs(&mut manifest); @@ -79,7 +79,7 @@ pub struct TestConfig { impl TestConfig { pub fn parse(args: &TestArgs) -> Self { - let cargo_args = split_features(&args.cargo_args); + let cargo_args = parse_cargo_args(&args.cargo_args); let mut manifest = load_osdk_manifest(&cargo_args, args.osdk_args.select.as_ref()); apply_cli_args(&mut manifest, &args.osdk_args); try_fill_system_configs(&mut manifest); @@ -128,9 +128,10 @@ fn load_osdk_manifest>(cargo_args: &CargoArgs, selection: Option CargoArgs { +/// Parse cargo args. +/// 1. Split `features` in `cargo_args` to ensure each string contains exactly one feature. +/// 2. Change `profile` to `release` if `--release` is set. +fn parse_cargo_args(cargo_args: &CargoArgs) -> CargoArgs { let mut features = Vec::new(); for feature in cargo_args.features.iter() { @@ -141,8 +142,15 @@ fn split_features(cargo_args: &CargoArgs) -> CargoArgs { } } + let profile = if cargo_args.release { + "release".to_string() + } else { + cargo_args.profile.clone() + }; + CargoArgs { - profile: cargo_args.profile.clone(), + profile, + release: cargo_args.release, features, } }