diff --git a/cmd/lucy/scenecmd.go b/cmd/lucy/scenecmd.go index 31139d4..7ff4581 100644 --- a/cmd/lucy/scenecmd.go +++ b/cmd/lucy/scenecmd.go @@ -19,6 +19,16 @@ func sceneCmd( cmd := parseCommand(os.Args[2:]) switch cmd.Name { + case "list": + { + scenes, err := c.GetScenes(ctx) + if err != nil { + log.Fatalln("Failed to load scenes:", err) + } + + WriteSceneTable(os.Stdout, scenes) + } + case "create", "update": { fileName := cmd.Params.Get(0).String() diff --git a/cmd/lucy/tables.go b/cmd/lucy/tables.go index eef7a0d..992d6fb 100644 --- a/cmd/lucy/tables.go +++ b/cmd/lucy/tables.go @@ -94,6 +94,24 @@ func WriteDeviceInfoTable(w io.Writer, devices []models.Device) { table.Render() } +func WriteSceneTable(w io.Writer, scenes []models.Scene) { + table := tablewriter.NewWriter(w) + table.SetHeader([]string{"ID", "NAME", "ROLES", "INTERVAL"}) + + table.SetReflowDuringAutoWrap(false) + + for _, v := range scenes { + table.Append([]string{ + fmt.Sprint(v.ID), + v.Name, + fmt.Sprint(len(v.Roles)), + fmt.Sprint(v.IntervalMS), + }) + } + + table.Render() +} + func WriteHandlerInfoTable(w io.Writer, handlers []models.EventHandler) { table := tablewriter.NewWriter(w) table.SetHeader([]string{"ID", "EVENT NAME", "PRIORITY", "CONDITIONS", "TARGET", "ACTION"})