package script import ( "fmt" "github.com/google/uuid" "strings" ) type UpdateTrigger Trigger func (c UpdateTrigger) CommandDescription() string { return fmt.Sprintf("script.UpdateTrigger(%s, %s(%#+v, %#+v))", c.ID, c.Event, c.DeviceMatch, c.Parameter, ) } type DeleteTrigger struct { ID uuid.UUID `json:"id"` } func (c DeleteTrigger) CommandDescription() string { return fmt.Sprintf("script.DeleteTrigger(%s)", c.ID) } type SetVariable struct { Match *string Devices []string Key string Value string } func (c SetVariable) CommandDescription() string { switch { case c.Match != nil: return fmt.Sprintf("script.SetVariable(tag(%s), %s, %s)", *c.Match, c.Key, c.Value) case c.Devices != nil: return fmt.Sprintf("script.SetVariable(devices(%s), %s, %s)", strings.Join(c.Devices, ", "), c.Key, c.Value) default: return fmt.Sprintf("script.SetVariable(global, %s, %s)", c.Key, c.Value) } } type Update struct { Name string `json:"name"` Lines []Line `json:"lines"` } func (c Update) CommandDescription() string { return fmt.Sprintf("script.Update(%s, [%d lines...])", c.Name, len(c.Lines)) } type Execute struct { Name string `json:"name"` Match string `json:"match"` } func (c Execute) CommandDescription() string { return fmt.Sprintf("script.Execute(%s, %s)", c.Name, c.Match) }