GoSungrow/cmd/commands.go

113 lines
2.2 KiB
Go
Raw Permalink Normal View History

2022-10-07 23:12:47 +11:00
package cmd
import (
"GoSungrow/defaults"
2022-12-05 21:33:52 +11:00
"github.com/MickMake/GoUnify/Only"
2022-10-07 23:12:47 +11:00
"github.com/MickMake/GoUnify/Unify"
"github.com/spf13/cobra"
)
type Cmds struct {
Unify *Unify.Unify
Api *CmdApi
Data *CmdData
Info *CmdInfo
2022-12-05 21:33:52 +11:00
Show *CmdShow
2022-10-07 23:12:47 +11:00
Mqtt *CmdMqtt
2022-12-21 10:13:24 +11:00
Ha *CmdHa
2022-10-07 23:12:47 +11:00
ConfigDir string
CacheDir string
ConfigFile string
WriteConfig bool
Quiet bool
Debug bool
Args []string
Error error
}
//goland:noinspection GoNameStartsWithPackageName
type CmdDefault struct {
Error error
cmd *cobra.Command
SelfCmd *cobra.Command
}
var cmds Cmds
func init() {
for range Only.Once {
cmds.Unify = Unify.New(
2022-12-21 14:02:51 +11:00
Unify.Options {
2022-10-07 23:12:47 +11:00
Description: defaults.Description,
BinaryName: defaults.BinaryName,
BinaryVersion: defaults.BinaryVersion,
SourceRepo: defaults.SourceRepo,
BinaryRepo: defaults.BinaryRepo,
EnvPrefix: defaults.EnvPrefix,
HelpSummary: defaults.HelpSummary,
ReadMe: defaults.Readme,
Examples: defaults.Examples,
},
Unify.Flags{},
)
cmdRoot := cmds.Unify.GetCmd()
cmds.Api = NewCmdApi()
cmds.Api.AttachCommand(cmdRoot)
cmds.Api.AttachFlags(cmdRoot, cmds.Unify.GetViper())
cmds.Data = NewCmdData()
cmds.Data.AttachCommand(cmdRoot)
cmds.Info = NewCmdInfo()
cmds.Info.AttachCommand(cmdRoot)
2022-12-05 21:33:52 +11:00
cmds.Show = NewCmdShow()
cmds.Show.AttachCommand(cmdRoot)
2022-10-07 23:12:47 +11:00
cmds.Mqtt = NewCmdMqtt()
cmds.Mqtt.AttachCommand(cmdRoot)
2022-10-11 17:26:26 +11:00
cmds.Mqtt.AttachFlags(cmdRoot, cmds.Unify.GetViper())
2022-12-21 10:13:24 +11:00
cmds.Ha = NewCmdHa()
cmds.Ha.AttachCommand(cmdRoot)
2022-10-07 23:12:47 +11:00
}
}
func Execute() error {
var err error
for range Only.Once {
// 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.
err = cmds.Unify.Execute()
if err != nil {
break
}
}
return err
}
2022-10-10 21:35:03 +11:00
func (ca *Cmds) ProcessArgs(_ *cobra.Command, args []string) error {
for range Only.Once {
ca.Args = args
ca.ConfigDir = cmds.Unify.GetConfigDir()
ca.ConfigFile = cmds.Unify.GetConfigFile()
ca.CacheDir = cmds.Unify.GetCacheDir()
ca.Debug = cmds.Unify.Flags.Debug
ca.Quiet = cmds.Unify.Flags.Quiet
}
return ca.Error
}