From a137b34df2637c895cda4bb24b0e7e317dea7031 Mon Sep 17 00:00:00 2001 From: lovestaco Date: Sat, 12 Aug 2023 20:28:53 +0530 Subject: [PATCH] Extracting common functionalities --- controller/controller.go | 53 ++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/controller/controller.go b/controller/controller.go index b7691e2d..b3f0feca 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -89,34 +89,25 @@ func Process(version string) { oldDir, _ := os.Getwd() utils.ChangeWorkingDir(dir) - if len(o.Env) > 0 { + if (o.Env) == "" { envMap, err := preprocess.GetL2EnvVariables(dir) if err != nil { log.Error().Str("Type", "Preprocess").Msg(err.Error()) return } + marshalAndPrintJSON(envMap) + return + } - envTrie := trie.New() - for key := range envMap { - envTrie.Insert(key) - } - - searchQuery := o.Env - suggestions := envTrie.SearchAll(searchQuery) - filteredEnvs := make(map[string]interface{}) - for _, suggestion := range suggestions { - if env, found := envMap[suggestion]; found { - filteredEnvs[suggestion] = env - } - } - - filteredJSON, err := json.MarshalIndent(filteredEnvs, "", " ") + if len(o.Env) > 0 { + envMap, err := preprocess.GetL2EnvVariables(dir) if err != nil { - log.Error().Str("Type", "Preprocess").Msg(fmt.Sprintf("Failed to marshal filtered env's to JSON: %v", err)) + log.Error().Str("Type", "Preprocess").Msg(err.Error()) return } - fmt.Println(string(filteredJSON)) + filteredEnvs := getRelevantEnvs(envMap, o) + marshalAndPrintJSON(filteredEnvs) return } @@ -144,3 +135,29 @@ func Process(version string) { log.Debug().Str("Parsed API", parsedAPI.String()).Msg("") HandleParsedFile(parsedAPI, o, dir) } + +func marshalAndPrintJSON(data interface{}) { + filteredJSON, err := json.MarshalIndent(data, "", " ") + if err != nil { + log.Error().Str("Type", "Preprocess").Msg(fmt.Sprintf("Failed to marshal JSON: %v", err)) + return + } + fmt.Println(string(filteredJSON)) +} + +func getRelevantEnvs(envMap map[string]map[string]interface{}, o *lama2cmd.Opts) map[string]interface{} { + envTrie := trie.New() + for key := range envMap { + envTrie.Insert(key) + } + + searchQuery := o.Env + suggestions := envTrie.SearchAll(searchQuery) + filteredEnvs := make(map[string]interface{}) + for _, suggestion := range suggestions { + if env, found := envMap[suggestion]; found { + filteredEnvs[suggestion] = env + } + } + return filteredEnvs +}