diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 950ba72e25..04a0111961 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1660,6 +1660,34 @@ impl CliOptions { }); } + if !from_config_file.is_empty() { + // collect unstable granular flags + let mut all_valid_unstable_flags: Vec<&str> = + crate::UNSTABLE_GRANULAR_FLAGS + .iter() + .map(|granular_flag| granular_flag.0) + .collect(); + + let mut another_unstable_flags = + Vec::from(["sloppy-imports", "byonm", "bare-node-builtins"]); + // add more unstable flags to the same vector holding granular flags + all_valid_unstable_flags.append(&mut another_unstable_flags); + + // check and warn if the unstable flag of config file isn't supported, by + // iterating through the vector holding the unstable flags + for unstable_value_from_config_file in &from_config_file { + if !all_valid_unstable_flags + .contains(&unstable_value_from_config_file.as_str()) + { + log::warn!( + "{} '{}' isn't a valid unstable feature", + colors::yellow("Warning"), + unstable_value_from_config_file + ); + } + } + } + from_config_file } diff --git a/tests/specs/task/invalid_unstable_feature/__test__.jsonc b/tests/specs/task/invalid_unstable_feature/__test__.jsonc new file mode 100644 index 0000000000..bfac9d1536 --- /dev/null +++ b/tests/specs/task/invalid_unstable_feature/__test__.jsonc @@ -0,0 +1,6 @@ +{ + "steps": [{ + "args": "task start", + "output": "invalid_unstable_feature.out" + }] +} diff --git a/tests/specs/task/invalid_unstable_feature/deno.json b/tests/specs/task/invalid_unstable_feature/deno.json new file mode 100644 index 0000000000..36f084e47d --- /dev/null +++ b/tests/specs/task/invalid_unstable_feature/deno.json @@ -0,0 +1,22 @@ +{ + "tasks": { + "start": "deno run index.js" + }, + "unstable": [ + "abc", + "byonm", + "bare-node-builtins", + "sloppy-imports", + "unsafe-proto", + "webgpu", + "broadcast-channel", + "worker-options", + "cron", + "kv", + "ffi", + "fs", + "net", + "http", + "cba" + ] +} diff --git a/tests/specs/task/invalid_unstable_feature/index.js b/tests/specs/task/invalid_unstable_feature/index.js new file mode 100644 index 0000000000..fb5a295b66 --- /dev/null +++ b/tests/specs/task/invalid_unstable_feature/index.js @@ -0,0 +1 @@ +console.log("Hello unstable features"); diff --git a/tests/specs/task/invalid_unstable_feature/invalid_unstable_feature.out b/tests/specs/task/invalid_unstable_feature/invalid_unstable_feature.out new file mode 100644 index 0000000000..78c4eaca9f --- /dev/null +++ b/tests/specs/task/invalid_unstable_feature/invalid_unstable_feature.out @@ -0,0 +1,5 @@ +Task start deno run index.js +Warning Sloppy imports are not recommended and have a negative impact on performance. +Warning 'abc' isn't a valid unstable feature +Warning 'cba' isn't a valid unstable feature +Hello unstable features