From c4b67b35542652a9c2c27c9f5f810c2420dc7626 Mon Sep 17 00:00:00 2001 From: Steve Ramage Date: Tue, 12 Apr 2022 20:07:04 -0700 Subject: [PATCH] Resolves #128 - Stores aliases in a dedicated directory --- cmd/aliases.go | 6 ++---- external/aliases/aliases.go | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cmd/aliases.go b/cmd/aliases.go index 5f78da00..0882edac 100644 --- a/cmd/aliases.go +++ b/cmd/aliases.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/elasticpath/epcc-cli/external/aliases" "github.com/elasticpath/epcc-cli/external/completion" - "github.com/elasticpath/epcc-cli/external/profiles" "github.com/elasticpath/epcc-cli/external/resources" "github.com/spf13/cobra" "os" @@ -62,8 +61,7 @@ var aliasClearCmd = &cobra.Command{ Use: "clear", Short: "clear all aliases", RunE: func(cmd *cobra.Command, args []string) error { - profileDirectory := profiles.GetProfileDirectory() - os.RemoveAll(profileDirectory) - return nil + aliasDataDirectory := aliases.GetAliasDataDirectory() + return os.RemoveAll(aliasDataDirectory) }, } diff --git a/external/aliases/aliases.go b/external/aliases/aliases.go index 87fc8ae0..17fc0eb9 100644 --- a/external/aliases/aliases.go +++ b/external/aliases/aliases.go @@ -9,6 +9,7 @@ import ( "gopkg.in/yaml.v3" "io/ioutil" "os" + "path/filepath" "strconv" "strings" "sync" @@ -18,9 +19,20 @@ import ( // however, we should use file locking in the OS to stop multiple concurrent invocations. var filelock = sync.Mutex{} -func GetAliasesForJsonApiType(jsonApiType string) map[string]string { +func GetAliasDataDirectory() string { profileDirectory := profiles.GetProfileDataDirectory() - aliasFile := getDirectoryForJsonApiType(profileDirectory, jsonApiType) + profileDataDirectory := filepath.FromSlash(profileDirectory + "/aliases/") + + //built in check if dir exists + if err := os.MkdirAll(profileDataDirectory, 0700); err != nil { + log.Errorf("could not make directory") + } + + return profileDataDirectory +} +func GetAliasesForJsonApiType(jsonApiType string) map[string]string { + profileDirectory := GetAliasDataDirectory() + aliasFile := getAliasFileForJsonApiType(profileDirectory, jsonApiType) aliasMap := map[string]string{} @@ -59,7 +71,7 @@ func SaveAliasesForResources(jsonTxt string) { log.Tracef("All aliases: %s", results) - profileDirectory := profiles.GetProfileDataDirectory() + profileDirectory := GetAliasDataDirectory() for resourceType, aliases := range results { saveAliasesForResource(profileDirectory, resourceType, aliases) } @@ -71,7 +83,7 @@ func saveAliasesForResource(profileDirectory string, jsonApiType string, aliases filelock.Lock() defer filelock.Unlock() - aliasFile := getDirectoryForJsonApiType(profileDirectory, jsonApiType) + aliasFile := getAliasFileForJsonApiType(profileDirectory, jsonApiType) data, err := ioutil.ReadFile(aliasFile) if err != nil { log.Debugf("Could not read %s, error %s", aliasFile, err) @@ -123,7 +135,7 @@ func saveAliasesForResource(profileDirectory string, jsonApiType string, aliases } } -func getDirectoryForJsonApiType(profileDirectory string, resourceType string) string { +func getAliasFileForJsonApiType(profileDirectory string, resourceType string) string { aliasFile := fmt.Sprintf("%s/aliases_%s.yml", profileDirectory, resourceType) return aliasFile }