From 92f0617029802aad66d9851d0926a033b300f083 Mon Sep 17 00:00:00 2001 From: German Lashevich Date: Tue, 5 Sep 2023 11:53:08 +0200 Subject: [PATCH] fix: use ArgoCD application path relatively to git root --- internal/myks/globe.go | 24 ++++++++++++++++++++++++ internal/myks/plugin_argocd.go | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/internal/myks/globe.go b/internal/myks/globe.go index ef9d7bb6..84795aaf 100644 --- a/internal/myks/globe.go +++ b/internal/myks/globe.go @@ -96,6 +96,8 @@ type Globe struct { /// Runtime data + // Git repository path prefix (non-empty if running in a subdirectory of a git repository) + GitPathPrefix string // Git repository branch GitRepoBranch string // Git repository URL @@ -128,6 +130,10 @@ func New(rootDir string) *Globe { log.Fatal().Err(err).Msg("Unable to set defaults") } + if err := g.setGitPathPrefix(); err != nil { + log.Warn().Err(err).Msg("Unable to set git path prefix") + } + if err := g.setGitRepoUrl(); err != nil { log.Warn().Err(err).Msg("Unable to set git repo url") } @@ -351,6 +357,24 @@ func (g *Globe) collectEnvironmentsInPath(searchPath string) { } } +func (g *Globe) setGitPathPrefix() error { + if g.GitPathPrefix == "" { + gitArgs := []string{} + if g.RootDir != "" { + gitArgs = append(gitArgs, "-C", g.RootDir) + } + gitArgs = append(gitArgs, "rev-parse", "--show-prefix") + result, err := runCmd("git", nil, gitArgs, func(name string, args []string) { + log.Debug().Msg(msgRunCmd("set git path prefix", name, args)) + }) + if err != nil { + return err + } + g.GitPathPrefix = strings.Trim(result.Stdout, "\n") + } + return nil +} + func (g *Globe) setGitRepoUrl() error { if g.GitRepoUrl == "" { result, err := runCmd("git", nil, []string{"remote", "get-url", "origin"}, func(name string, args []string) { diff --git a/internal/myks/plugin_argocd.go b/internal/myks/plugin_argocd.go index e69ee85d..c7b78a27 100644 --- a/internal/myks/plugin_argocd.go +++ b/internal/myks/plugin_argocd.go @@ -116,7 +116,7 @@ func (a *Application) argoCDPrepareDefaults() (filename string, err error) { data := Data{ AppName: a.Name, - AppPath: a.getDestinationDir(), + AppPath: filepath.Join(a.e.g.GitPathPrefix, a.getDestinationDir()), RepoURL: a.e.g.GitRepoUrl, TargetRevision: a.e.g.GitRepoBranch, }