Skip to content

Commit

Permalink
Add --env-file cli support
Browse files Browse the repository at this point in the history
  • Loading branch information
birkskyum committed Aug 7, 2024
1 parent 59c9bd0 commit 274ed3e
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 8 deletions.
48 changes: 43 additions & 5 deletions cli/args/flags.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3398,8 +3398,9 @@ fn import_map_arg() -> Arg {
}

fn env_file_arg() -> Arg {
Arg::new("env")
.long("env")
Arg::new("env-file")
.long("env-file")
.alias("env")
.value_name("FILE")
.help("Load .env file")
.long_help("UNSTABLE: Load environment variables from local file. Only the first environment variable with a given key is used. Existing process environment variables are not overwritten.")
Expand Down Expand Up @@ -4792,7 +4793,7 @@ fn import_map_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
}

fn env_file_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
flags.env_file = matches.remove_one::<String>("env");
flags.env_file = matches.remove_one::<String>("env-file");
}

fn reload_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
Expand Down Expand Up @@ -7570,7 +7571,7 @@ mod tests {
}

#[test]
fn run_env_file_default() {
fn run_env_default() {
let r = flags_from_vec(svec!["deno", "run", "--env", "script.ts"]);
assert_eq!(
r.unwrap(),
Expand All @@ -7585,6 +7586,22 @@ mod tests {
);
}

#[test]
fn run_env_file_default() {
let r = flags_from_vec(svec!["deno", "run", "--env-file", "script.ts"]);
assert_eq!(
r.unwrap(),
Flags {
subcommand: DenoSubcommand::Run(RunFlags::new_default(
"script.ts".to_string(),
)),
env_file: Some(".env".to_owned()),
code_cache_enabled: true,
..Flags::default()
}
);
}

#[test]
fn run_no_code_cache() {
let r =
Expand All @@ -7601,7 +7618,7 @@ mod tests {
}

#[test]
fn run_env_file_defined() {
fn run_env_defined() {
let r =
flags_from_vec(svec!["deno", "run", "--env=.another_env", "script.ts"]);
assert_eq!(
Expand All @@ -7617,6 +7634,27 @@ mod tests {
);
}

#[test]
fn run_env_file_defined() {
let r = flags_from_vec(svec![
"deno",
"run",
"--env-file=.another_env",
"script.ts"
]);
assert_eq!(
r.unwrap(),
Flags {
subcommand: DenoSubcommand::Run(RunFlags::new_default(
"script.ts".to_string(),
)),
env_file: Some(".another_env".to_owned()),
code_cache_enabled: true,
..Flags::default()
}
);
}

#[test]
fn cache_multiple() {
let r =
Expand Down
2 changes: 1 addition & 1 deletion cli/args/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1885,7 +1885,7 @@ fn load_env_variables_from_env_file(filename: Option<&String>) {
Err(error) => {
match error {
dotenvy::Error::LineParse(line, index)=> log::info!("{} Parsing failed within the specified environment file: {} at index: {} of the value: {}",colors::yellow("Warning"), env_file_name, index, line),
dotenvy::Error::Io(_)=> log::info!("{} The `--env` flag was used, but the environment file specified '{}' was not found.",colors::yellow("Warning"),env_file_name),
dotenvy::Error::Io(_)=> log::info!("{} The `--env-file` flag was used, but the environment file specified '{}' was not found.",colors::yellow("Warning"),env_file_name),
dotenvy::Error::EnvVar(_)=> log::info!("{} One or more of the environment variables isn't present or not unicode within the specified environment file: {}",colors::yellow("Warning"),env_file_name),
_ => log::info!("{} Unknown failure occurred with the specified environment file: {}", colors::yellow("Warning"), env_file_name),
}
Expand Down
2 changes: 1 addition & 1 deletion tests/testdata/eval/env_file_missing.out
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
Warning The `--env` flag was used, but the environment file specified 'missing' was not found.
Warning The `--env-file` flag was used, but the environment file specified 'missing' was not found.
undefined
2 changes: 1 addition & 1 deletion tests/testdata/run/env_file_missing.out
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Warning The `--env` flag was used, but the environment file specified 'missing' was not found.
Warning The `--env-file` flag was used, but the environment file specified 'missing' was not found.
undefined
undefined
undefined

0 comments on commit 274ed3e

Please sign in to comment.