mirror of
https://github.com/denoland/deno.git
synced 2025-07-24 05:35:33 +00:00
parent
900929f65c
commit
f3711f28f4
6 changed files with 63 additions and 37 deletions
47
cli/util/v8.rs
Normal file
47
cli/util/v8.rs
Normal file
|
@ -0,0 +1,47 @@
|
|||
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
#[inline(always)]
|
||||
pub fn get_v8_flags_from_env() -> Vec<String> {
|
||||
std::env::var("DENO_V8_FLAGS")
|
||||
.ok()
|
||||
.map(|flags| flags.split(',').map(String::from).collect::<Vec<String>>())
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn construct_v8_flags(
|
||||
v8_flags: &[String],
|
||||
env_v8_flags: Vec<String>,
|
||||
) -> Vec<String> {
|
||||
std::iter::once("UNUSED_BUT_NECESSARY_ARG0".to_owned())
|
||||
.chain(env_v8_flags.into_iter())
|
||||
.chain(v8_flags.iter().cloned())
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
||||
pub fn init_v8_flags(v8_flags: &[String], env_v8_flags: Vec<String>) {
|
||||
if v8_flags.is_empty() && env_v8_flags.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
let v8_flags_includes_help = env_v8_flags
|
||||
.iter()
|
||||
.chain(v8_flags)
|
||||
.any(|flag| flag == "-help" || flag == "--help");
|
||||
// Keep in sync with `standalone.rs`.
|
||||
let v8_flags = construct_v8_flags(v8_flags, env_v8_flags);
|
||||
let unrecognized_v8_flags = deno_core::v8_set_flags(v8_flags)
|
||||
.into_iter()
|
||||
.skip(1)
|
||||
.collect::<Vec<_>>();
|
||||
if !unrecognized_v8_flags.is_empty() {
|
||||
for f in unrecognized_v8_flags {
|
||||
eprintln!("error: V8 did not recognize flag '{}'", f);
|
||||
}
|
||||
eprintln!("\nFor a list of V8 flags, use '--v8-flags=--help'");
|
||||
std::process::exit(1);
|
||||
}
|
||||
if v8_flags_includes_help {
|
||||
std::process::exit(0);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue