Our own Helm Command/Resource/Executor #13
@ -1,8 +1,10 @@
|
||||
use std::collections::HashMap;
|
||||
use std::env::temp_dir;
|
||||
use std::ffi::OsStr;
|
||||
use std::io::ErrorKind;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::{Command, Output};
|
||||
use temp_dir::{self, TempDir};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct HelmCommandExecutor {
|
||||
@ -18,8 +20,8 @@ pub struct HelmCommandExecutor {
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct HelmGlobals {
|
||||
chart_home: PathBuf,
|
||||
config_home: PathBuf,
|
||||
pub chart_home: Option<PathBuf>,
|
||||
pub config_home: Option<PathBuf>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@ -42,12 +44,16 @@ pub struct HelmChart {
|
||||
}
|
||||
|
||||
impl HelmCommandExecutor {
|
||||
pub fn generate(&self) -> Result<Output, std::io::Error> {
|
||||
pub fn generate(mut self) -> Result<Output, std::io::Error> {
|
||||
if self.globals.chart_home.is_none() {
|
||||
self.globals.chart_home = Some(PathBuf::from("charts"));
|
||||
}
|
||||
|
||||
if self
|
||||
.clone()
|
||||
.chart
|
||||
.clone()
|
||||
.chart_exists_locally(self.clone().globals.chart_home)
|
||||
.chart_exists_locally(self.clone().globals.chart_home.unwrap())
|
||||
.is_none()
|
||||
{
|
||||
if self.chart.repo.is_none() {
|
||||
@ -59,14 +65,14 @@ impl HelmCommandExecutor {
|
||||
self.clone().run_command(
|
||||
self.chart
|
||||
.clone()
|
||||
.pull_command(self.globals.chart_home.clone()),
|
||||
.pull_command(self.globals.chart_home.clone().unwrap()),
|
||||
)?;
|
||||
}
|
||||
|
||||
self.clone().run_command(
|
||||
self.chart
|
||||
.clone()
|
||||
.helm_args(self.globals.chart_home.clone()),
|
||||
.helm_args(self.globals.chart_home.clone().unwrap()),
|
||||
)
|
||||
}
|
||||
|
||||
@ -85,17 +91,22 @@ impl HelmCommandExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
let config_home = match self.globals.config_home {
|
||||
Some(p) => p,
|
||||
None => PathBuf::from(TempDir::new()?.path()),
|
||||
};
|
||||
|
||||
self.env.insert(
|
||||
"HELM_CONFIG_HOME".to_string(),
|
||||
self.globals.config_home.to_str().unwrap().to_string(),
|
||||
config_home.to_str().unwrap().to_string(),
|
||||
);
|
||||
self.env.insert(
|
||||
"HELM_CACHE_HOME".to_string(),
|
||||
self.globals.config_home.to_str().unwrap().to_string(),
|
||||
config_home.to_str().unwrap().to_string(),
|
||||
);
|
||||
self.env.insert(
|
||||
"HELM_DATA_HOME".to_string(),
|
||||
self.globals.config_home.to_str().unwrap().to_string(),
|
||||
config_home.to_str().unwrap().to_string(),
|
||||
);
|
||||
|
||||
Command::new(self.path).envs(self.env).args(args).output()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user