accorder/cmd/commoners.go

88 lines
1.9 KiB
Go

package cmd
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
"github.com/kirsle/configdir"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func MissingRequiredFlags(flags map[string]string, session string, cmd *cobra.Command) {
exit := false
for vipFlag, cliFlag := range flags {
if ViperValue(session, vipFlag) == "" {
fmt.Printf("ERROR: A flag --%s is missing for SESSION `%s` to work.\n", cliFlag, session)
exit = true
}
}
if exit {
fmt.Println("~ ~ ~ ~")
cmd.Usage()
os.Exit(1)
}
if cmd.Flags().NFlag() > 0 {
viper.WriteConfig()
}
}
func CustomHelpOutput(cmd *cobra.Command) {
cmd.Flags().SortFlags = false
cmd.SetHelpTemplate(HelpTemplate)
cmd.SetUsageTemplate(UsageTemplate)
}
func ViperSettingsPrint() {
vipAll, err := json.MarshalIndent(viper.AllSettings(), "", " ")
if err != nil {
fmt.Println("error:", err)
}
fmt.Print(string(vipAll))
}
func CliFlagValue(cmd *cobra.Command, key string) (value string) {
value, _ = cmd.Flags().GetString(key)
return
}
func ViperValue(session, key string) string {
return viper.GetString(fmt.Sprintf("%s.%s", session, key))
}
func CheckProfile(cmd *cobra.Command, args []string) error {
hasProfile := false
// fmt.Println("VIPER:", viper.AllSettings())
for k, v := range viper.AllSettings() {
fmt.Println("VIPER KEY/VALUE:", k, v)
if k == args[0] {
hasProfile = true
}
}
if !hasProfile {
return fmt.Errorf("PROFILE %s should be added to the configuration file.\n", args[0])
}
return fmt.Errorf("MEH! %s should be added to the configuration file.\n", args[0])
}
func ConfigBaseDir() string {
return configdir.LocalConfig("akkorder")
}
func ConfigMinioDir() string {
return filepath.Join(ConfigBaseDir(), "minio")
}
func initConfigPaths() {
err := configdir.MakePath(ConfigBaseDir()) // Ensure it exists.
if err != nil {
panic(err)
}
os.MkdirAll(filepath.Join(ConfigBaseDir(), "minio"), 0777)
}