GoSungrow/cmd/struct.go
2022-10-07 23:12:47 +11:00

297 lines
6.0 KiB
Go

package cmd
import (
"GoSungrow/Only"
"github.com/spf13/cobra"
"strings"
)
var DefaultAreas = []string{"all"}
// type CommandArgs struct {
// // SunGrow *iSolarCloud.SunGrow
// // Git *mmGit.Git
// // Mqtt *mmHa.Mqtt
// //
// // ConfigDir string
// // CacheDir string
// // ConfigFile string
// // WriteConfig bool
// // Quiet bool
// // Debug bool
// // OutputType string
// // OutputFile string
// //
// // // iSolarCloud api
// // ApiTimeout time.Duration
// // ApiUrl string
// // ApiUsername string
// // ApiPassword string
// // ApiAppKey string
// // ApiLastLogin string
// // ApiToken string
// // ApiTokenFile string
// // ApiOutputType string
// //
// // // HASSIO MQTT
// // MqttUsername string
// // MqttPassword string
// // MqttHost string
// // MqttPort string
// //
// // // Google sheets
// // GoogleSheet string
// // GoogleSheetUpdate bool
// //
// // // GitHub api
// // GitRepo string
// // GitRepoDir string
// // GitUsername string
// // GitPassword string
// // GitKeyFile string
// // GitToken string
// // GitDiffCmd string
// //
// // Args []string
//
// Valid bool
// Error error
// }
// var Cmd CommandArgs
// func (ca *CommandArgs) IsValid() error {
// for range Only.Once {
// if !ca.Valid {
// ca.Error = errors.New("args are not valid")
// break
// }
// }
//
// return ca.Error
// }
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
// if Cmd.GoogleSheetUpdate {
// SunGrow.OutputType = iSolarCloud.TypeGoogle
// }
//
// Git.Error = Cmd.GitSet()
// if Cmd.Error != nil {
// break
// }
//
// ca.Valid = true
}
return ca.Error
}
// func (ca *CommandArgs) GitSet() error {
// for range Only.Once {
// if ca.Git != nil {
// break
// }
//
// ca.Git = mmGit.New()
// if ca.Git.Error != nil {
// ca.Error = ca.Git.Error
// break
// }
//
// // Cmd.Error = Git.SetAuth(ca.GitUsername, ca.GitPassword)
// // if Cmd.Error != nil {
// // break
// // }
//
// ca.Error = ca.Git.SetKeyFile(ca.GitKeyFile)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.SetToken(ca.GitToken)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.SetRepo(ca.GitRepo)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.SetDir(ca.GitRepoDir)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.SetDiffCmd(ca.GitDiffCmd)
// if ca.Error != nil {
// break
// }
// }
//
// return ca.Error
// }
//
// func (ca *CommandArgs) GitLs(options ...string) error {
// for range Only.Once {
// os.Args = []string{"GitLs"}
// os.Args = append(os.Args, options...)
// ca.Error = os.Chdir(ca.GitRepoDir)
// if ca.Error != nil {
// break
// }
//
// // ls-go is a standalone GoLang executable,
// // but I've modified it to be a package and so directly callable.
// ca.Error = lsgo.LsGo()
// if ca.Error != nil {
// break
// }
// }
//
// return ca.Error
// }
//
// func (ca *CommandArgs) GitSync(msg string, entities ...string) error {
// for range Only.Once {
// ca.Error = ca.Git.Pull()
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.GitSave(entities...)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.Add(".")
// if ca.Error != nil {
// break
// }
//
// if msg == "" {
// msg = fmt.Sprintf("Updated %d files.", len(entities))
// }
// ca.Error = ca.Git.Commit(msg)
// if ca.Error != nil {
// break
// }
//
// ca.Error = ca.Git.Push()
// if ca.Error != nil {
// break
// }
// }
//
// return ca.Error
// }
//
// func (ca *CommandArgs) GitSave(entities ...string) error {
// for range Only.Once {
// if len(entities) == 0 {
// entities = DefaultAreas
// }
// fmt.Printf("Saving %d entities from the SunGrow to Git...\n", len(entities))
//
// // SunGrow.OutputType = iSolarCloud.StringTypeJson
// // SunGrow.OutputType = iSolarCloud.TypeJson
//
// for _, entity := range entities {
// // Remove plurals.
// entity = strings.TrimSuffix(entity, "s")
// // SunGrow.OutputString = ""
//
// switch entity {
// case "domain":
// ca.Api.Api.SunGrow.Error = ca.Api.Api.SunGrow.Init()
// }
// if ca.Api.Api.SunGrow.Error != nil {
// break
// }
//
// jf := AddJsonSuffix(entity)
// ca.Error = ca.Git.SaveFile(jf, []byte(ca.OutputFile))
// if ca.Error != nil {
// break
// }
// }
//
// fmt.Printf("Saved %d files.", len(entities))
// }
//
// return ca.Error
// }
//
// func (ca *CommandArgs) GoogleUpdate(entities ...string) error {
//
// for range Only.Once {
// // SunGrow.OutputType = iSolarCloud.TypeGoogle
//
// if len(entities) == 0 {
// entities = DefaultAreas
// }
// fmt.Printf("Saving %d entities from the SunGrow to Google Docs...\n", len(entities))
//
// for _, entity := range entities {
// switch entity {
// case "domain":
// ca.Error = ca.Api.SunGrow.Init()
// if ca.Error != nil {
// break
// }
// }
//
// // sheet := google.Sheet {
// // Id: "",
// // Credentials: nil,
// // SheetName: entity,
// // Range: "",
// // Data: ca.OutputFile,
// // }
// // sheet.Set(sheet)
// // ca.Error = sheet.WriteSheet()
// if ca.Error != nil {
// break
// }
// }
// }
//
// return ca.Error
// }
// func (ca *CommandArgs) UpdateGoogleSheet(name string, data [][]interface{}) error {
//
// for range Only.Once {
// sheet := google.Sheet{
// Id: "",
// Credentials: nil,
// SheetName: name,
// Range: "",
// Data: data,
// }
// sheet.Set(sheet)
// ca.Error = sheet.WriteSheet()
// if ca.Error != nil {
// break
// }
// }
//
// return p.Error
// }
func AddJsonSuffix(fn string) string {
return strings.TrimSuffix(fn, ".json") + ".json"
}