diff --git a/Cargo.lock b/Cargo.lock index 3ffc994..4a54b10 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1700,7 +1700,7 @@ dependencies = [ [[package]] name = "tiny-encrypt" -version = "1.5.2" +version = "1.5.3" dependencies = [ "aes-gcm-stream", "base64", diff --git a/Cargo.toml b/Cargo.toml index 217d1a3..6b59557 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tiny-encrypt" -version = "1.5.2" +version = "1.5.3" edition = "2021" license = "MIT" description = "A simple and tiny file encrypt tool" diff --git a/src/config.rs b/src/config.rs index a4e559d..bd05ac1 100644 --- a/src/config.rs +++ b/src/config.rs @@ -36,12 +36,19 @@ use crate::spec::TinyEncryptEnvelopType; #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TinyEncryptConfig { - pub environment: Option>, + pub environment: Option>, pub namespaces: Option>, pub envelops: Vec, pub profiles: HashMap>, } +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(untagged)] +pub enum StringOrVecString { + String(String), + Vec(Vec), +} + #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TinyEncryptConfigEnvelop { @@ -81,6 +88,10 @@ impl TinyEncryptConfig { if let Some(environment) = &config.environment { for (k, v) in environment { + let v = match v { + StringOrVecString::String(s) => { s.to_string() } + StringOrVecString::Vec(vs) => { vs.join(",") } + }; debugging!("Set env: {}={}", k, v); env::set_var(k, v); }