fix: display unstable flags at bottom of help text (#21468)

Moves the unstable flags to be at the bottom of the help text. They were
previously all over the place for some reason.
This commit is contained in:
David Sherret 2023-12-06 09:22:30 -05:00 committed by GitHub
parent 8c0fb9003d
commit 1ac370632f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 65 additions and 41 deletions

View file

@ -946,6 +946,8 @@ fn clap_root() -> Command {
.max_term_width(80)
.version(crate::version::deno())
.long_version(long_version)
// cause --unstable flags to display at the bottom of the help text
.next_display_order(1000)
.arg(
Arg::new("unstable")
.long("unstable")
@ -992,6 +994,8 @@ fn clap_root() -> Command {
}
cmd
// reset the display order after the unstable flags
.next_display_order(0)
.arg(
Arg::new("log-level")
.short('L')

View file

@ -271,7 +271,7 @@ fn unwrap_or_exit<T>(result: Result<T, AnyError>) -> T {
}
}
// NOTE(bartlomieju): keep IDs in sync with `runtime/90_deno_ns.js`.
// NOTE(bartlomieju): keep IDs in sync with `runtime/90_deno_ns.js` (search for `unstableFeatures`)
pub(crate) static UNSTABLE_GRANULAR_FLAGS: &[(
// flag name
&str,
@ -285,44 +285,46 @@ pub(crate) static UNSTABLE_GRANULAR_FLAGS: &[(
"Enable unstable `BroadcastChannel` API",
1,
),
(
deno_runtime::deno_cron::UNSTABLE_FEATURE_NAME,
"Enable unstable Deno.cron API",
2,
),
(
deno_runtime::deno_ffi::UNSTABLE_FEATURE_NAME,
"Enable unstable FFI APIs",
2,
3,
),
(
deno_runtime::deno_fs::UNSTABLE_FEATURE_NAME,
"Enable unstable file system APIs",
3,
),
(
deno_runtime::deno_kv::UNSTABLE_FEATURE_NAME,
"Enable unstable Key-Value store APIs",
4,
),
(
deno_runtime::deno_net::UNSTABLE_FEATURE_NAME,
"Enable unstable net APIs",
5,
),
(
deno_runtime::ops::http::UNSTABLE_FEATURE_NAME,
"Enable unstable HTTP APIs",
5,
),
(
deno_runtime::deno_kv::UNSTABLE_FEATURE_NAME,
"Enable unstable Key-Value store APIs",
6,
),
(
deno_runtime::ops::worker_host::UNSTABLE_FEATURE_NAME,
"Enable unstable Web Worker APIs",
deno_runtime::deno_net::UNSTABLE_FEATURE_NAME,
"Enable unstable net APIs",
7,
),
(
deno_runtime::deno_cron::UNSTABLE_FEATURE_NAME,
"Enable unstable Deno.cron API",
8,
),
(
"unsafe-proto",
"Enable unsafe __proto__ support. This is a security risk.",
// This number is used directly in the JS code. Search
// for "unstableFeatures" to see where it's used.
8,
),
(
deno_runtime::ops::worker_host::UNSTABLE_FEATURE_NAME,
"Enable unstable Web Worker APIs",
9,
),
];
@ -402,3 +404,20 @@ pub fn main() {
std::process::exit(exit_code);
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn unstable_granular_flag_names_sorted() {
let flags = UNSTABLE_GRANULAR_FLAGS
.iter()
.map(|(name, _, _)| name.to_string())
.collect::<Vec<_>>();
let mut sorted_flags = flags.clone();
sorted_flags.sort();
// sort the flags by name so they appear nicely in the help text
assert_eq!(flags, sorted_flags);
}
}

View file

@ -159,8 +159,12 @@ const denoNsUnstableById = {
// BroadcastChannel is always available?
// 1: {},
// FFI
2: {
cron: cron.cron,
},
// FFI
3: {
dlopen: ffi.dlopen,
UnsafeCallback: ffi.UnsafeCallback,
UnsafePointer: ffi.UnsafePointer,
@ -169,7 +173,7 @@ const denoNsUnstableById = {
},
// FS
3: {
4: {
flock: fs.flock,
flockSync: fs.flockSync,
funlock: fs.funlock,
@ -177,8 +181,17 @@ const denoNsUnstableById = {
umask: fs.umask,
},
// HTTP
5: {
HttpClient: httpClient.HttpClient,
createHttpClient: httpClient.createHttpClient,
// TODO(bartlomieju): why is it needed?
http,
upgradeHttp: http.upgradeHttp,
},
// KV
4: {
6: {
openKv: kv.openKv,
AtomicOperation: kv.AtomicOperation,
Kv: kv.Kv,
@ -187,29 +200,17 @@ const denoNsUnstableById = {
},
// net
5: {
7: {
listenDatagram: net.createListenDatagram(
ops.op_net_listen_udp,
ops.op_net_listen_unixpacket,
),
},
// HTTP
6: {
HttpClient: httpClient.HttpClient,
createHttpClient: httpClient.createHttpClient,
// TODO(bartlomieju): why is it needed?
http,
upgradeHttp: http.upgradeHttp,
},
// Worker options
// 7: {}
8: {
cron: cron.cron,
},
// Unsafe proto
// 9: {},
// 8: {},
// Worker options
// 9: {}
};
// when editing this list, also update unstableDenoProps in cli/tsc/99_main_compiler.js

View file

@ -567,7 +567,7 @@ function bootstrapMainRuntime(runtimeOptions) {
}
}
if (!ArrayPrototypeIncludes(unstableFeatures, /* unsafe-proto */ 9)) {
if (!ArrayPrototypeIncludes(unstableFeatures, /* unsafe-proto */ 8)) {
// Removes the `__proto__` for security reasons.
// https://tc39.es/ecma262/#sec-get-object.prototype.__proto__
delete Object.prototype.__proto__;
@ -672,7 +672,7 @@ function bootstrapWorkerRuntime(
}
}
if (!ArrayPrototypeIncludes(unstableFeatures, /* unsafe-proto */ 9)) {
if (!ArrayPrototypeIncludes(unstableFeatures, /* unsafe-proto */ 8)) {
// Removes the `__proto__` for security reasons.
// https://tc39.es/ecma262/#sec-get-object.prototype.__proto__
delete Object.prototype.__proto__;