Skip to content

Commit

Permalink
Allow key-value pairs in config volumes.
Browse files Browse the repository at this point in the history
Allow volumes to use the `["VOL=/path/to/volume"]' syntax as well, so
additional mount points can be defined by value in the config file.
  • Loading branch information
Alexhuszagh committed Jun 3, 2022
1 parent a51135f commit 7359534
Showing 1 changed file with 19 additions and 15 deletions.
34 changes: 19 additions & 15 deletions src/docker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,19 @@ pub fn register(target: &Target, verbose: bool) -> Result<()> {
.run(verbose)
}

fn validate_env_var(var: &str) -> Result<(&str, Option<&str>)> {
let (key, value) = match var.split_once('=') {
Some((key, value)) => (key, Some(value)),
_ => (var, None),
};

if key == "CROSS_RUNNER" {
bail!("CROSS_RUNNER environment variable name is reserved and cannot be pass through");
}

Ok((key, value))
}

#[allow(clippy::too_many_arguments)] // TODO: refactor
pub fn run(
target: &Target,
Expand Down Expand Up @@ -114,19 +127,6 @@ pub fn run(

let mut docker = docker_command("run")?;

let validate_env_var = |var: &str| -> Result<()> {
let var = match var.split_once('=') {
Some((key, _)) => key,
_ => var,
};

if var == "CROSS_RUNNER" {
bail!("CROSS_RUNNER environment variable name is reserved and cannot be pass through");
}

Ok(())
};

for ref var in config.env_passthrough(target)? {
validate_env_var(var)?;

Expand All @@ -136,9 +136,13 @@ pub fn run(
}
let mut env_volumes = false;
for ref var in config.env_volumes(target)? {
validate_env_var(var)?;
let (var, value) = validate_env_var(var)?;
let value = match value {
Some(v) => Ok(v.to_string()),
None => env::var(var),
};

if let Ok(val) = env::var(var) {
if let Ok(val) = value {
let host_path: PathBuf;
let mount_path: PathBuf;

Expand Down

0 comments on commit 7359534

Please sign in to comment.