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

514 lines
16 KiB
Go

package cmd
import (
"GoSungrow/iSolarCloud/api/output"
"fmt"
"github.com/MickMake/GoUnify/Only"
"github.com/MickMake/GoUnify/cmdConfig"
"github.com/MickMake/GoUnify/cmdHelp"
"github.com/spf13/cobra"
)
//goland:noinspection GoNameStartsWithPackageName
type CmdInfo CmdDefault
func NewCmdInfo() *CmdInfo {
var ret *CmdInfo
for range Only.Once {
ret = &CmdInfo{
Error: nil,
cmd: nil,
SelfCmd: nil,
}
}
return ret
}
func (c *CmdInfo) AttachCommand(cmd *cobra.Command) *cobra.Command {
for range Only.Once {
if cmd == nil {
break
}
c.cmd = cmd
// ******************************************************************************** //
c.SelfCmd = &cobra.Command{
Use: "info",
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("General iSolarCloud functions."),
Long: fmt.Sprintf("General iSolarCloud functions."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
Args: cobra.MinimumNArgs(1),
}
cmd.AddCommand(c.SelfCmd)
c.SelfCmd.Example = cmdHelp.PrintExamples(c.SelfCmd, "get <endpoint>", "put <endpoint>")
// ********************************************************************************
var cmdInfoGet = &cobra.Command{
Use: "get",
Aliases: []string{output.StringTypeTable},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get info from iSolarCloud (table)"),
Long: fmt.Sprintf("Get info from iSolarCloud (table)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
Args: cobra.MinimumNArgs(1),
}
c.SelfCmd.AddCommand(cmdInfoGet)
cmdInfoGet.Example = cmdHelp.PrintExamples(cmdInfoGet, "[area.]<endpoint>")
c.AttachCmdInfo(cmdInfoGet)
// ********************************************************************************
var cmdInfoRaw = &cobra.Command{
Use: output.StringTypeRaw,
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get info from iSolarCloud (raw)"),
Long: fmt.Sprintf("Get info from iSolarCloud (raw)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
Args: cobra.MinimumNArgs(1),
}
c.SelfCmd.AddCommand(cmdInfoRaw)
cmdInfoRaw.Example = cmdHelp.PrintExamples(cmdInfoRaw, "[area.]<endpoint>")
c.AttachCmdInfo(cmdInfoRaw)
// ********************************************************************************
var cmdInfoJson = &cobra.Command{
Use: output.StringTypeJson,
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get info from iSolarCloud (json)"),
Long: fmt.Sprintf("Get info from iSolarCloud (json)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
Args: cobra.MinimumNArgs(1),
}
c.SelfCmd.AddCommand(cmdInfoJson)
cmdInfoJson.Example = cmdHelp.PrintExamples(cmdInfoJson, "[area.]<endpoint>")
c.AttachCmdInfo(cmdInfoJson)
// ********************************************************************************
var cmdInfoCsv = &cobra.Command{
Use: output.StringTypeCsv,
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get info from iSolarCloud (json)"),
Long: fmt.Sprintf("Get info from iSolarCloud (json)"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
Args: cobra.MinimumNArgs(1),
}
c.SelfCmd.AddCommand(cmdInfoCsv)
cmdInfoCsv.Example = cmdHelp.PrintExamples(cmdInfoCsv, "[area.]<endpoint>")
c.AttachCmdInfo(cmdInfoCsv)
// ********************************************************************************
var cmdInfoPut = &cobra.Command{
Use: "put",
Aliases: []string{"set", "write"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Set info on iSolarCloud"),
Long: fmt.Sprintf("Set info on iSolarCloud"),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
Run: cmds.CmdInfoPut,
Args: cobra.ExactArgs(2),
}
c.SelfCmd.AddCommand(cmdInfoPut)
cmdInfoPut.Example = cmdHelp.PrintExamples(cmdInfoPut, "[area.]<endpoint> <value>")
}
return c.SelfCmd
}
func (c *CmdInfo) AttachCmdInfo(cmd *cobra.Command) *cobra.Command {
for range Only.Once {
if cmd == nil {
break
}
c.AttachCmdInfoPointNames(cmd)
c.AttachCmdInfoMqtt(cmd)
c.AttachCmdInfoSearchPointInfo(cmd)
c.AttachCmdInfoDevices(cmd)
c.AttachCmdInfoDeviceModels(cmd)
c.AttachCmdInfoTemplates(cmd)
c.AttachCmdInfoTemplatePoints(cmd)
c.AttachCmdInfoGetDevicePoints(cmd)
}
return cmd
}
func (ca *Cmds) CmdInfoPut(_ *cobra.Command, _ []string) {
for range Only.Once {
fmt.Println("Not yet implemented.")
// ca.Api.SunGrow.OutputType.SetFile()
// args = cmdConfig.FillArray(2, args)
// c.Error = SunGrow.PutHighLevel(args[0], args[1])
}
}
func (c *CmdInfo) AttachCmdInfoMqtt(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "mqtt",
Aliases: []string{"mqtt-server"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get iSolarCloud MQTT service login details."),
Long: fmt.Sprintf("Get iSolarCloud MQTT service login details."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
args = cmdConfig.FillArray(1, args)
return cmds.Api.SunGrow.GetIsolarcloudMqtt(args[0])
},
Args: cobra.RangeArgs(0, 1),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoPointNames(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "point-names",
Aliases: []string{"names"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get iSolarCloud point names."),
Long: fmt.Sprintf("Get iSolarCloud point names."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
return cmds.Api.SunGrow.GetPointNames(args...)
},
Args: cobra.MinimumNArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoSearchPointInfo(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "search-point-names",
Aliases: []string{"names"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get iSolarCloud search point names."),
Long: fmt.Sprintf("Get iSolarCloud search point names."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
return cmds.Api.SunGrow.SearchPointNames(args...)
},
Args: cobra.MinimumNArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoDevices(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "devices",
Aliases: []string{"device"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get iSolarCloud devices."),
Long: fmt.Sprintf("Get iSolarCloud devices."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
pids, err := cmds.Api.SunGrow.StringToPids(args...)
if err != nil {
return err
}
return cmds.Api.SunGrow.GetDevices(pids...)
},
Args: cobra.MinimumNArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoDeviceModels(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "models",
Aliases: []string{"model"},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get ALL iSolarCloud models."),
Long: fmt.Sprintf("Get ALL iSolarCloud models."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
return cmds.Api.SunGrow.GetDeviceModels()
},
Args: cobra.MinimumNArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoTemplates(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "templates",
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("Get all defined templates."),
Long: fmt.Sprintf("Get all defined templates."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
return cmds.Api.SunGrow.GetTemplates()
},
Args: cobra.ExactArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "")
return cmd
}
func (c *CmdInfo) AttachCmdInfoTemplatePoints(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "template-points <template_id>",
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("List data points used in report template."),
Long: fmt.Sprintf("List data points used in report template."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
return cmds.Api.SunGrow.GetTemplatePoints(args[0])
},
Args: cobra.ExactArgs(1),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "8042", "8040")
return cmd
}
func (c *CmdInfo) AttachCmdInfoGetDevicePoints(cmd *cobra.Command) *cobra.Command {
// ********************************************************************************
var c2 = &cobra.Command{
Use: "device-points [ps_id]",
Aliases: []string{},
Annotations: map[string]string{"group": "Info"},
Short: fmt.Sprintf("List all available device data points."),
Long: fmt.Sprintf("List all available device data points."),
DisableFlagParsing: false,
DisableFlagsInUseLine: false,
PreRunE: func(cmd *cobra.Command, args []string) error {
cmds.Error = cmds.ProcessArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
cmds.Error = cmds.SunGrowArgs(cmd, args)
if cmds.Error != nil {
return cmds.Error
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
_ = cmds.SetOutputType(cmd)
pids, err := cmds.Api.SunGrow.StringToPids(args...)
if err != nil {
return err
}
return cmds.Api.SunGrow.GetDevicePoints(pids...)
},
Args: cobra.MinimumNArgs(0),
}
cmd.AddCommand(c2)
c2.Example = cmdHelp.PrintExamples(c2, "", "1129147")
return cmd
}