diff --git a/internal/config/unit.go b/internal/config/unit.go index 0c3d75c..f46f30f 100644 --- a/internal/config/unit.go +++ b/internal/config/unit.go @@ -87,10 +87,17 @@ func (u *Unit) Template(ctx context.Context, name, squadron, unit, namespace str Args(u.PostRendererArgs()...). Args("--values", "-"). Args(helmArgs...) + if strings.HasPrefix(u.Chart.Repository, "file://") { cmd.Args(path.Clean(strings.TrimPrefix(u.Chart.Repository, "file://"))) } else { - cmd.Args(u.Chart.Name, "--repo", u.Chart.Repository, "--version", u.Chart.Version) + cmd.Args(u.Chart.Name) + if u.Chart.Repository != "" { + cmd.Args("--repo", u.Chart.Repository) + } + if u.Chart.Version != "" { + cmd.Args("--version", u.Chart.Version) + } } if out, err := cmd.Run(ctx); err != nil { return nil, errors.Wrap(err, out) diff --git a/squadron.go b/squadron.go index 7ea1342..88b9d08 100644 --- a/squadron.go +++ b/squadron.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "os/exec" + "path" "slices" "strings" "sync" @@ -364,10 +365,17 @@ func (sq *Squadron) Diff(ctx context.Context, helmArgs []string, parallel int) e "--dry-run", ) cmd.Stdin = bytes.NewReader(valueBytes) - if strings.Contains(v.Chart.Repository, "file://") { - cmd.Args = append(cmd.Args, "/"+strings.TrimPrefix(v.Chart.Repository, "file://")) + + if strings.HasPrefix(v.Chart.Repository, "file://") { + cmd.Args = append(cmd.Args, path.Clean(strings.TrimPrefix(v.Chart.Repository, "file://"))) } else { - cmd.Args = append(cmd.Args, v.Chart.Name, "--repo", v.Chart.Repository, "--version", v.Chart.Version) + cmd.Args = append(cmd.Args, v.Chart.Name) + if v.Chart.Repository != "" { + cmd.Args = append(cmd.Args, "--repo", v.Chart.Repository) + } + if v.Chart.Version != "" { + cmd.Args = append(cmd.Args, "--version", v.Chart.Version) + } } cmd.Args = append(cmd.Args, helmArgs...) out, err := cmd.CombinedOutput() @@ -551,8 +559,8 @@ func (sq *Squadron) Up(ctx context.Context, helmArgs []string, username, version Args("--values", "-"). Args(helmArgs...) - if strings.Contains(v.Chart.Repository, "file://") { - cmd.Args(strings.TrimPrefix(v.Chart.Repository, "file://")) + if strings.HasPrefix(v.Chart.Repository, "file://") { + cmd.Args(path.Clean(strings.TrimPrefix(v.Chart.Repository, "file://"))) } else { cmd.Args(v.Chart.Name) if v.Chart.Repository != "" {