Add visual power indicator character
This commit is contained in:
parent
a4c305c2e9
commit
9c92d7945d
@ -12,6 +12,7 @@ import (
|
||||
|
||||
const lumercFile string = ".lumerc"
|
||||
const lumeConfigFile string = "lume.conf"
|
||||
const defaultPowerIndicator rune = '●'
|
||||
|
||||
type Config struct {
|
||||
AccessToken string `toml:"access_token"`
|
||||
@ -19,6 +20,7 @@ type Config struct {
|
||||
Colors map[string][]float32 `toml:"colors"`
|
||||
userAgent string
|
||||
Debug bool `toml:"debug"`
|
||||
Indicator string `toml:"indicator"`
|
||||
}
|
||||
|
||||
var (
|
||||
@ -33,6 +35,7 @@ func NewConfig() *Config {
|
||||
c.userAgent = initUserAgent()
|
||||
c.Debug = false
|
||||
c.OutputFormat = "simple"
|
||||
c.Indicator = string(defaultPowerIndicator)
|
||||
return c
|
||||
}
|
||||
|
||||
@ -48,6 +51,10 @@ func (c *Config) Validate() error {
|
||||
return errors.New("access_token is not set")
|
||||
}
|
||||
|
||||
if len([]rune(c.Indicator)) != 1 {
|
||||
return errors.New("indicator must be a single rune")
|
||||
}
|
||||
|
||||
if err = c.validateColors(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
12
cmd/print.go
12
cmd/print.go
@ -102,6 +102,15 @@ func (tp *tablePrinter) Lights(lights []lifx.Light) {
|
||||
table.Render()
|
||||
}
|
||||
|
||||
func ColorizeIndicator(s string) string {
|
||||
c := color.New(color.FgRed)
|
||||
if s == "on" {
|
||||
c = color.New(color.FgGreen)
|
||||
}
|
||||
|
||||
return c.Sprint(GetConfig().Indicator)
|
||||
}
|
||||
|
||||
func ColorizePower(s string) string {
|
||||
c := color.New(color.FgRed)
|
||||
if s == "on" {
|
||||
@ -130,10 +139,11 @@ func PrintfWithIndent(indent int, format string, a ...interface{}) (n int, err e
|
||||
}
|
||||
|
||||
func makeLightsTable(lights []lifx.Light) (hdr []string, rows [][]string) {
|
||||
hdr = []string{"ID", "Location", "Group", "Label", "Last Seen", "Power"}
|
||||
hdr = []string{"", "ID", "Location", "Group", "Label", "Last Seen", "Power"}
|
||||
|
||||
for _, l := range lights {
|
||||
rows = append(rows, []string{
|
||||
fmt.Sprint(ColorizeIndicator(l.Power)),
|
||||
fmt.Sprint(l.Id),
|
||||
fmt.Sprint(l.Location.Name),
|
||||
fmt.Sprint(l.Group.Name),
|
||||
|
@ -39,12 +39,13 @@ func ShowCmd(ctx Context) (int, error) {
|
||||
for i, l := range lights {
|
||||
indent = 0
|
||||
fmt.Printf(
|
||||
"Light ID: %s, %s, Power: %s\n",
|
||||
"%s Light ID: %s, %s, Power: %s\n",
|
||||
ColorizeIndicator(l.Power),
|
||||
l.Id,
|
||||
connected(l.Connected),
|
||||
ColorizePower(l.Power),
|
||||
)
|
||||
indent += Tabstop
|
||||
indent += Tabstop + 2
|
||||
PrintfWithIndent(indent, "Label: %s, ID: %s\n", l.Label, l.Id)
|
||||
PrintfWithIndent(indent, "UUID: %s\n", l.UUID)
|
||||
PrintfWithIndent(indent, "Location: %s, ID: %s\n", l.Location.Name, l.Location.Id)
|
||||
|
Loading…
Reference in New Issue
Block a user