Update the custom command mirror
This commit is contained in:
		@@ -21,4 +21,5 @@ patches:
 | 
			
		||||
    git:
 | 
			
		||||
      path: ../patches/git/zot.patch
 | 
			
		||||
mirrors:
 | 
			
		||||
  - apps-git
 | 
			
		||||
  #  - apps-git
 | 
			
		||||
  - custom-command
 | 
			
		||||
 
 | 
			
		||||
@@ -4,10 +4,6 @@ variables:
 | 
			
		||||
include:
 | 
			
		||||
  - kind: Charts
 | 
			
		||||
    path: ./charts/zot.yaml
 | 
			
		||||
  - kind: Charts
 | 
			
		||||
    path: ./charts/gitops-server.yaml
 | 
			
		||||
  - kind: Charts
 | 
			
		||||
    path: ./charts/external-secrets-operator.yaml
 | 
			
		||||
patches:
 | 
			
		||||
  - name: yamlfmt
 | 
			
		||||
    custom_command:
 | 
			
		||||
@@ -56,3 +52,10 @@ mirrors:
 | 
			
		||||
      commit: |-
 | 
			
		||||
        chore: mirror {{ name }}-{{ version }}
 | 
			
		||||
        upstream_repo: {{ repo_url }}
 | 
			
		||||
  - name: custom-commands
 | 
			
		||||
    custom_command:
 | 
			
		||||
      package:
 | 
			
		||||
        - helm package -d package .
 | 
			
		||||
      upload:
 | 
			
		||||
        - helm push ./package/{{ name }}-{{ version }}.tgz oci://registry.badhouseplants.net
 | 
			
		||||
        - rm -rf ./package
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,7 @@ fn exec(args: Args) -> Result<(), Box<dyn Error>> {
 | 
			
		||||
            // First step is to pull the chart to the working dir
 | 
			
		||||
            let current_repo = chart.chart.find_repo(config.repositories.clone())?;
 | 
			
		||||
            let chart_path = current_repo.pull_chart(chart.chart.clone(), workdir_path.clone())?;
 | 
			
		||||
            chart.chart.version = current_repo.get_version(chart_path.clone())?;
 | 
			
		||||
            if let Some(extensions) = chart.extensions.clone() {
 | 
			
		||||
                extensions
 | 
			
		||||
                    .into_iter()
 | 
			
		||||
@@ -89,7 +90,7 @@ fn exec(args: Args) -> Result<(), Box<dyn Error>> {
 | 
			
		||||
            message_empty(&format!("{}", chart.chart.name));
 | 
			
		||||
            Ok(())
 | 
			
		||||
        })?;
 | 
			
		||||
    todo!()
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ pub(crate) struct CustomCommands {
 | 
			
		||||
impl Target for CustomCommands {
 | 
			
		||||
    fn push(
 | 
			
		||||
        &self,
 | 
			
		||||
        workdir_path: String,
 | 
			
		||||
        _: String,
 | 
			
		||||
        chart_path: String,
 | 
			
		||||
        chart_local: ChartExtended,
 | 
			
		||||
        dry_run: bool,
 | 
			
		||||
@@ -21,14 +21,14 @@ impl Target for CustomCommands {
 | 
			
		||||
            let mut reg = helmzoo_lib::template::register_handlebars();
 | 
			
		||||
            reg.register_template_string("cmd", cmd_tmpl)?;
 | 
			
		||||
            let cmd = reg.render("cmd", &chart_local)?;
 | 
			
		||||
            cli_exec_from_dir(cmd, workdir_path.clone())?;
 | 
			
		||||
            cli_exec_from_dir(cmd, chart_path.clone())?;
 | 
			
		||||
        }
 | 
			
		||||
        if !dry_run {
 | 
			
		||||
            for cmd_tmpl in self.upload.clone() {
 | 
			
		||||
                let mut reg = template::register_handlebars();
 | 
			
		||||
                reg.register_template_string("cmd", cmd_tmpl)?;
 | 
			
		||||
                let cmd = reg.render("cmd", &chart_local)?;
 | 
			
		||||
                cli_exec_from_dir(cmd, workdir_path.clone())?;
 | 
			
		||||
                cli_exec_from_dir(cmd, chart_path.clone())?;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        Ok(())
 | 
			
		||||
 
 | 
			
		||||
@@ -73,4 +73,10 @@ impl RepositoryImpl for GitRepo {
 | 
			
		||||
    fn get_url(&self) -> String {
 | 
			
		||||
        self.url.clone()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn get_version(&self, chart_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        let cmd = "helm show chart . | yq '.version'".to_string();
 | 
			
		||||
        let version = cli_exec_from_dir(cmd, chart_path.clone())?;
 | 
			
		||||
        Ok(version)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,12 @@ impl RepositoryImpl for HelmRepo {
 | 
			
		||||
    fn get_url(&self) -> String {
 | 
			
		||||
        self.url.clone()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn get_version(&self, chart_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        let cmd = "helm show chart . | yq '.version'".to_string();
 | 
			
		||||
        let version = cli_exec_from_dir(cmd, chart_path.clone())?;
 | 
			
		||||
        Ok(version)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub(crate) enum RepoKind {
 | 
			
		||||
@@ -54,7 +60,7 @@ impl HelmRepo {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn pull_oci(&self, chart: Chart, workdir_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
    fn pull_oci(&self, mut chart: Chart, workdir_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        let args = match chart.version.as_str() {
 | 
			
		||||
            LATEST_VERSION => "".to_string(),
 | 
			
		||||
            _ => format!("--version {}", chart.version.clone()),
 | 
			
		||||
@@ -85,13 +91,11 @@ impl HelmRepo {
 | 
			
		||||
            Err(err) => return Err(Box::from(err)),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // TODO: Do we really need it?
 | 
			
		||||
        let cmd = "helm show chart . | yq '.version'".to_string();
 | 
			
		||||
        let _version = cli_exec_from_dir(cmd, new_dir_name.clone())?;
 | 
			
		||||
        Ok(new_dir_name)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn pull_default(&self, chart: Chart, workdir_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
 | 
			
		||||
    fn pull_default(&self, mut chart: Chart, workdir_path: String) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        // Add repo and update
 | 
			
		||||
        let repo_local_name = general_purpose::STANDARD_NO_PAD.encode(self.get_url());
 | 
			
		||||
        let cmd = format!("helm repo add {} {}", repo_local_name, self.get_url());
 | 
			
		||||
@@ -125,9 +129,6 @@ impl HelmRepo {
 | 
			
		||||
        let cmd = format!("helm repo remove {}", repo_local_name);
 | 
			
		||||
        cli_exec(cmd)?;
 | 
			
		||||
 | 
			
		||||
        // TODO: Do we really need it?
 | 
			
		||||
        let cmd = "helm show chart . | yq '.version'".to_string();
 | 
			
		||||
        let _version = cli_exec_from_dir(cmd, new_dir_name.clone())?;
 | 
			
		||||
        Ok(new_dir_name)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ pub(crate) enum RepositoryKind {
 | 
			
		||||
 | 
			
		||||
pub trait RepositoryImpl {
 | 
			
		||||
    fn pull_chart(&self, chart: Chart, workdir_path: String) -> Result<String, Box<dyn Error>>;
 | 
			
		||||
    fn get_version(&self, chart_path: String) -> Result<String, Box<dyn Error>>;
 | 
			
		||||
    fn get_url(&self) -> String;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user