build 0.0.0.25
This commit is contained in:
+289
-38
@@ -3,6 +3,8 @@ package cmdEnv
|
||||
import (
|
||||
"fmt"
|
||||
"kode-starter/config"
|
||||
"kode-starter/configFile"
|
||||
|
||||
"kode-starter/utils"
|
||||
"os"
|
||||
"strconv"
|
||||
@@ -12,56 +14,282 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// initailize global config
|
||||
var CfgGlobal *config.Config // Declare a global variable for config
|
||||
|
||||
// init configuration for this package
|
||||
func InitConfig(config *config.Config) {
|
||||
CfgGlobal = config // Assign the passed config to the global variable
|
||||
}
|
||||
|
||||
var EnvCmd = &cobra.Command{
|
||||
Use: "env",
|
||||
Short: "manage environment variables",
|
||||
Long: `A simple CLI option to manage environment variables`,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
|
||||
config.SetInformations(cmd, args)
|
||||
// Start Env command
|
||||
startEnvVar(cmd, args)
|
||||
|
||||
// listFlag := config.GetEnvVariablesListFlag()
|
||||
|
||||
// fmt.Println("listFlag: " + strconv.FormatBool(listFlag))
|
||||
|
||||
// fmt.Println("GetEnvVariablesListFlag: " + strconv.FormatBool(config.GetEnvVariablesListFlag()))
|
||||
|
||||
// if listFlag {
|
||||
// printEnvVariables()
|
||||
// }
|
||||
|
||||
// err := listEnvVariables()
|
||||
// if err != nil {
|
||||
// fmt.Println("Error:", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
// if config.GetEnvVariablesFilterFlag() {
|
||||
// printEnvVariablesFilter(config.GetEnvVariablesFilter())
|
||||
// } else if config.GetEnvVariablesListFlag() {
|
||||
// printEnvVariables()
|
||||
// }
|
||||
},
|
||||
}
|
||||
|
||||
func startEnvVar(cmd *cobra.Command, args []string) {
|
||||
|
||||
config.SetInformations(cmd, args)
|
||||
flag := config.EnvVariablesFlag
|
||||
CfgGlobal.DebugPrintConfig("Function StartEnvVar")
|
||||
|
||||
// if list flag is set to true list all environment variables
|
||||
fmt.Println("GetEnvVariablesListFlag: " + strconv.FormatBool(config.GetEnvVariablesListFlag()))
|
||||
if flag {
|
||||
printEnvVariables()
|
||||
// declare map listPaths
|
||||
var ListPaths map[string]string
|
||||
|
||||
// initialize command environment
|
||||
CfgGlobal.InitCmdEnv(cmd, args)
|
||||
|
||||
CfgGlobal.DebugPrintConfig("Function StartEnvVar")
|
||||
|
||||
if CfgGlobal.GetEnvListFlag() {
|
||||
|
||||
if !CfgGlobal.GetJsonFlag() {
|
||||
if CfgGlobal.GetEnvFilterFlag() {
|
||||
fmt.Println("with filter")
|
||||
printEnvVariablesFilter(CfgGlobal.GetEnvFilter(), CfgGlobal.GetEnvShowAllFlag())
|
||||
} else {
|
||||
printEnvVariables()
|
||||
}
|
||||
} else {
|
||||
|
||||
json, err := createJsonAllEnvVar(CfgGlobal.GetEnvFilter(), CfgGlobal.GetEnvShowAllFlag())
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return
|
||||
}
|
||||
fmt.Println(json)
|
||||
}
|
||||
|
||||
} else if CfgGlobal.GetEnvYmlFileFlag() {
|
||||
cfgYmlFile := configFile.LoadConfigFile(CfgGlobal)
|
||||
|
||||
ListCategories, err := cfgYmlFile.GetListCategory()
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return
|
||||
}
|
||||
if !CfgGlobal.GetJsonFlag() {
|
||||
utils.PrintHeader()
|
||||
fmt.Println("\n L I S T E N V V A R S F R O M Y M L F I L E ")
|
||||
fmt.Println(utils.CreateLine(11))
|
||||
|
||||
for _, category := range ListCategories {
|
||||
// fmt.Println("Category: " + category)
|
||||
|
||||
ListPaths, err = cfgYmlFile.GetAllEnvironmentVariables(category)
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// if category flag is set
|
||||
if CfgGlobal.GetEnvCategoryFlag() {
|
||||
|
||||
if CfgGlobal.GetEnvCategoryInfo() == category {
|
||||
// if ListPaths is no empty
|
||||
if len(ListPaths) > 0 {
|
||||
fmt.Println(color.FgLightGreen.Render("\nCategory: " + category))
|
||||
fmt.Println(utils.CreateLine(3))
|
||||
|
||||
// print path and value
|
||||
nb := 1
|
||||
|
||||
for path, value := range ListPaths {
|
||||
utils.PrintTreeElement(nb, path, value)
|
||||
nb++
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
// if ListPaths is no empty
|
||||
if len(ListPaths) > 0 {
|
||||
fmt.Println(color.FgLightGreen.Render("\nCategory: " + category))
|
||||
fmt.Println(utils.CreateLine(3))
|
||||
|
||||
// print path and value
|
||||
nb := 1
|
||||
|
||||
for path, value := range ListPaths {
|
||||
utils.PrintTreeElement(nb, path, value)
|
||||
nb++
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
fmt.Println(utils.CreateLine(3))
|
||||
|
||||
} else {
|
||||
// Execute function createJsonAllEnvVarYml : create json output for all environment variables with category
|
||||
jsonOutput, err := createJsonAllEnvVarYml(cfgYmlFile, CfgGlobal.GetEnvCategoryInfo())
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return
|
||||
}
|
||||
fmt.Println(jsonOutput)
|
||||
}
|
||||
|
||||
} else {
|
||||
cmd.Help()
|
||||
fmt.Println(utils.CreateLine(8))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func createJsonAllEnvVar(filter string, showAll bool) (string, error) {
|
||||
|
||||
//var jsonOutput string
|
||||
jsonOutput := ""
|
||||
|
||||
// var map listPaths
|
||||
ListPaths := make(map[string]string)
|
||||
|
||||
// var pair []string
|
||||
|
||||
for _, e := range os.Environ() {
|
||||
// split key and value
|
||||
pair := strings.Split(e, "=")
|
||||
|
||||
// fmt.Println(pair[1])
|
||||
if showAll {
|
||||
ListPaths[string(pair[0])] = string(pair[1])
|
||||
} else {
|
||||
if (strings.Contains(pair[0], filter)) || (strings.Contains(pair[1], filter)) {
|
||||
ListPaths[string(pair[0])] = string(pair[1])
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// loop over all environment variables to create json output
|
||||
jsonOutput += "{\n"
|
||||
for path, value := range ListPaths {
|
||||
jsonOutput += " \"" + path + "\": \"" + value + "\",\n"
|
||||
}
|
||||
jsonOutput = strings.TrimSuffix(jsonOutput, ",\n")
|
||||
jsonOutput += "\n}\n"
|
||||
|
||||
return utils.DoubleBackSlash(jsonOutput), nil
|
||||
|
||||
}
|
||||
|
||||
// The function `createJsonAllEnvVar` creates a JSON string containing all environment variables from a
|
||||
// given configuration YAML file.
|
||||
func createJsonAllEnvVarYml(cfgYmlFile *configFile.ConfigYml, categoryInfo string) (string, error) {
|
||||
|
||||
//var jsonOutput string
|
||||
jsonOutput := ""
|
||||
|
||||
ListCategories, err := cfgYmlFile.GetListCategory()
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
var isCategoryInfoPresent bool = false
|
||||
|
||||
// check if categoryInfo includes in ListCategories
|
||||
for _, category := range ListCategories {
|
||||
if category == categoryInfo {
|
||||
isCategoryInfoPresent = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if categoryInfo == "" {
|
||||
|
||||
// loop over all categories
|
||||
jsonOutput += "{\n"
|
||||
for _, category := range ListCategories {
|
||||
|
||||
ListPaths, err := cfgYmlFile.GetAllEnvironmentVariables(category)
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
// if ListPaths is no empty
|
||||
if len(ListPaths) > 0 {
|
||||
|
||||
// add category as array and list of environment variables to jsonOutput
|
||||
|
||||
jsonOutput += " \"" + category + "\": [\n"
|
||||
|
||||
// loop over all environment variables
|
||||
for path, value := range ListPaths {
|
||||
jsonOutput += " {\n"
|
||||
jsonOutput += " \"" + path + "\": \"" + value + "\"\n"
|
||||
jsonOutput += " },\n"
|
||||
}
|
||||
|
||||
// remove last comma
|
||||
jsonOutput = strings.TrimSuffix(jsonOutput, ",\n")
|
||||
|
||||
jsonOutput += "\n ],\n"
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
jsonOutput = strings.TrimSuffix(jsonOutput, ",\n")
|
||||
jsonOutput += "\n}\n"
|
||||
|
||||
} else {
|
||||
|
||||
// loop over all categories
|
||||
if isCategoryInfoPresent {
|
||||
jsonOutput += "{\n"
|
||||
for _, category := range ListCategories {
|
||||
|
||||
ListPaths, err := cfgYmlFile.GetAllEnvironmentVariables(category)
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
if category == categoryInfo {
|
||||
// if ListPaths is no empty
|
||||
if len(ListPaths) > 0 {
|
||||
|
||||
// add category as array and list of environment variables to jsonOutput
|
||||
|
||||
jsonOutput += " \"" + category + "\": [\n"
|
||||
|
||||
// loop over all environment variables
|
||||
for path, value := range ListPaths {
|
||||
jsonOutput += " {\n"
|
||||
jsonOutput += " \"" + path + "\": \"" + value + "\"\n"
|
||||
jsonOutput += " },\n"
|
||||
}
|
||||
|
||||
// remove last comma
|
||||
jsonOutput = strings.TrimSuffix(jsonOutput, ",\n")
|
||||
|
||||
jsonOutput += "\n ],\n"
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jsonOutput = strings.TrimSuffix(jsonOutput, ",\n")
|
||||
jsonOutput += "\n}\n"
|
||||
}
|
||||
|
||||
}
|
||||
return utils.DoubleBackSlash(jsonOutput), nil
|
||||
|
||||
}
|
||||
|
||||
func listEnvVariables() error {
|
||||
|
||||
if config.GetEnvVariablesListFlag() {
|
||||
fmt.Println("GetEnvVariablesListFlag: " + strconv.FormatBool(config.GetEnvVariablesListFlag()))
|
||||
if CfgGlobal.GetEnvCmd().EnvVariablesFilterFlag {
|
||||
fmt.Println("GetEnvVariablesListFlag: " + strconv.FormatBool(CfgGlobal.GetEnvCmd().EnvVariablesListFlag))
|
||||
printEnvVariables()
|
||||
}
|
||||
|
||||
@@ -70,33 +298,56 @@ func listEnvVariables() error {
|
||||
}
|
||||
|
||||
func printEnvVariables() {
|
||||
fmt.Println("Environment variables")
|
||||
fmt.Println("---------------------")
|
||||
fmt.Println("E n v i r o n m e n t v a r i a b l e s")
|
||||
fmt.Println("-----------------------------------------")
|
||||
|
||||
nb := 1
|
||||
|
||||
// loop over all environment variables
|
||||
for _, e := range os.Environ() {
|
||||
// split key and value
|
||||
pair := strings.Split(e, "=")
|
||||
fmt.Printf("%s=%s\n", pair[0], pair[1])
|
||||
utils.PrintTreeElement(nb, pair[0], pair[1])
|
||||
nb++
|
||||
}
|
||||
|
||||
fmt.Println("-----------------------------------------")
|
||||
}
|
||||
|
||||
func printEnvVariablesFilter(filter string) {
|
||||
fmt.Println("Environment variables")
|
||||
func printEnvVariablesFilter(filter string, showAll bool) {
|
||||
fmt.Println("Filter Environment variables")
|
||||
// fmt.Println("---------------------")
|
||||
utils.CreateLine(5)
|
||||
|
||||
nb := 1
|
||||
var str2, str3 string
|
||||
var addToPrint bool = false
|
||||
|
||||
// loop over all environment variables
|
||||
for _, e := range os.Environ() {
|
||||
// split key and value
|
||||
pair := strings.Split(e, "=")
|
||||
if strings.Contains(pair[0], filter) {
|
||||
fmt.Printf("%s=%s\n", utils.ColorizeSubStrRed(pair[0], filter), color.Green.Sprint(pair[1]))
|
||||
str2 = utils.ColorizeSubStrRed(pair[0], filter)
|
||||
str3 = color.Green.Sprint(pair[1])
|
||||
addToPrint = true
|
||||
} else if strings.Contains(pair[1], filter) {
|
||||
fmt.Printf("%s=%s\n", color.Green.Sprint(pair[0]), utils.ColorizeSubStrRed(pair[1], filter))
|
||||
str2 = color.Green.Sprint(pair[0])
|
||||
str3 = utils.ColorizeSubStrRed(pair[1], filter)
|
||||
addToPrint = true
|
||||
} else {
|
||||
fmt.Printf("%s=%s\n", pair[0], pair[1])
|
||||
if showAll {
|
||||
str2 = utils.ColorizeString(pair[0], color.Green)
|
||||
str3 = utils.ColorizeString(pair[1], color.LightWhite)
|
||||
addToPrint = true
|
||||
}
|
||||
}
|
||||
if addToPrint {
|
||||
utils.PrintTreeElement(nb, str2, str3)
|
||||
}
|
||||
|
||||
addToPrint = false
|
||||
nb++
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user