diff --git a/cmd/mg/cmd/common.go b/cmd/mg/cmd/common.go index a892724..cb331c3 100644 --- a/cmd/mg/cmd/common.go +++ b/cmd/mg/cmd/common.go @@ -3,6 +3,7 @@ package cmd import ( "log" "os" + "strings" "github.com/taigrr/mg/parse" ) @@ -27,5 +28,11 @@ func GetConfig() parse.MGConfig { } } } + homeDir, _ := os.UserHomeDir() + for i, repo := range conf.Repos { + if strings.HasPrefix(repo.Path, "$HOME") { + conf.Repos[i].Path = strings.Replace(repo.Path, "$HOME", homeDir, 1) + } + } return conf } diff --git a/cmd/mg/cmd/register.go b/cmd/mg/cmd/register.go index 87f5153..86215d2 100644 --- a/cmd/mg/cmd/register.go +++ b/cmd/mg/cmd/register.go @@ -4,6 +4,7 @@ import ( "fmt" "log" "os" + "strings" git "github.com/go-git/go-git/v5" "github.com/spf13/cobra" @@ -52,6 +53,16 @@ var registerCmd = &cobra.Command{ os.Exit(1) } path = newPath.Filesystem.Root() + + homeDir, err := os.UserHomeDir() + if err != nil { + log.Println("Unable to get home directory") + os.Exit(1) + } + if strings.HasPrefix(path, homeDir) { + path = "$HOME" + path[len(homeDir):] + } + for _, v := range conf.Repos { if v.Path == path { fmt.Printf("repo %s already registered\n", path) diff --git a/parse/myrepos.go b/parse/myrepos.go index 8559b07..3f8b462 100644 --- a/parse/myrepos.go +++ b/parse/myrepos.go @@ -32,9 +32,9 @@ func (m MRConfig) ToMGConfig() MGConfig { mgconf := MGConfig(m) for i, repo := range mgconf.Repos { checkout := repo.Remote - if strings.HasPrefix(checkout, "git clone '") { + if after, ok := strings.CutPrefix(checkout, "git clone '"); ok { // git clone 'git@bitbucket.org:taigrr/mg.git' 'mg' - remote := strings.TrimPrefix(checkout, "git clone '") + remote := after sp := strings.Split(remote, "' '") remote = sp[0] mgconf.Repos[i].Remote = remote