mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-03-25 17:11:43 +01:00
113 lines
2.4 KiB
Go
113 lines
2.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"GoSungrow/Only"
|
|
"fmt"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
|
|
var rootCmd *cobra.Command
|
|
|
|
|
|
// Execute adds all child commands to the root command and sets flags appropriately.
|
|
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
|
func Execute() error {
|
|
for range Only.Once {
|
|
Cmd.ConfigDir, Cmd.Error = os.UserHomeDir()
|
|
if Cmd.Error != nil {
|
|
break
|
|
}
|
|
Cmd.ConfigDir = filepath.Join(Cmd.ConfigDir, "."+DefaultBinaryName)
|
|
_, Cmd.Error = os.Stat(Cmd.ConfigDir)
|
|
if os.IsExist(Cmd.Error) {
|
|
break
|
|
}
|
|
Cmd.Error = os.MkdirAll(Cmd.ConfigDir, 0700)
|
|
if Cmd.Error != nil {
|
|
break
|
|
}
|
|
|
|
Cmd.CacheDir, Cmd.Error = os.UserHomeDir()
|
|
if Cmd.Error != nil {
|
|
break
|
|
}
|
|
Cmd.CacheDir = filepath.Join(Cmd.CacheDir, "."+DefaultBinaryName, "cache")
|
|
_, Cmd.Error = os.Stat(Cmd.CacheDir)
|
|
if os.IsExist(Cmd.Error) {
|
|
break
|
|
}
|
|
Cmd.Error = os.MkdirAll(Cmd.CacheDir, 0700)
|
|
if Cmd.Error != nil {
|
|
break
|
|
}
|
|
|
|
Cmd.ConfigFile = filepath.Join(Cmd.ConfigDir, defaultConfigFile)
|
|
Cmd.ApiTokenFile = filepath.Join(Cmd.ConfigDir, defaultTokenFile)
|
|
|
|
rootViper = viper.New()
|
|
rootCmd = AttachRootCmd(nil)
|
|
_ = AttachCmdConfig(rootCmd)
|
|
_ = AttachCmdApi(rootCmd)
|
|
_ = AttachCmdData(rootCmd)
|
|
_ = AttachCmdMqtt(rootCmd)
|
|
_ = AttachCmdGit(rootCmd)
|
|
_ = AttachCmdGoogle(rootCmd)
|
|
_ = AttachCmdCron(rootCmd)
|
|
_ = AttachCmdVersion(rootCmd)
|
|
_ = AttachCmdHelpFlags(rootCmd)
|
|
|
|
// cobra.OnInitialize(initConfig) // Bound to rootCmd now.
|
|
cobra.EnableCommandSorting = false
|
|
|
|
err := rootCmd.Execute()
|
|
if err != nil {
|
|
break
|
|
}
|
|
if Cmd.Error != nil {
|
|
break
|
|
}
|
|
}
|
|
|
|
return Cmd.Error
|
|
}
|
|
|
|
//goland:noinspection GoUnusedFunction
|
|
func showArgs(cmd *cobra.Command, args []string) {
|
|
for range Only.Once {
|
|
flargs := cmd.Flags().Args()
|
|
if flargs != nil {
|
|
fmt.Printf("'%s' called with '%s'\n", cmd.CommandPath(), strings.Join(flargs, " "))
|
|
break
|
|
}
|
|
|
|
fmt.Printf("'%s' called with '%s'\n", cmd.CommandPath(), strings.Join(args, " "))
|
|
break
|
|
}
|
|
|
|
fmt.Println("")
|
|
}
|
|
|
|
func fillArray(count int, args []string) []string {
|
|
var ret []string
|
|
for range Only.Once {
|
|
//
|
|
// if len(args) == 0 {
|
|
// break
|
|
// }
|
|
ret = make([]string, count)
|
|
for i, e := range args {
|
|
ret[i] = e
|
|
}
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func AddJsonSuffix(fn string) string {
|
|
return strings.TrimSuffix(fn, ".json") + ".json"
|
|
}
|