mirror of
https://github.com/MickMake/GoSungrow.git
synced 2025-04-07 19:38:01 +02:00
297 lines
6.0 KiB
Go
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"
|
|
}
|