Feat: support quotes + Feat: call scene by name

This commit is contained in:
kayos@tcp.direct 2023-01-30 19:08:55 -08:00
parent c15ffeab6f
commit f525b859ed
Signed by: kayos
GPG Key ID: 4B841471B4BEE979
6 changed files with 43 additions and 3 deletions

1
go.mod
View File

@ -10,6 +10,7 @@ require (
github.com/davecgh/go-spew v1.1.1
github.com/dhamith93/systats v0.2.0
github.com/gliderlabs/ssh v0.3.5
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/lucasb-eyer/go-colorful v1.2.0
github.com/manifoldco/promptui v0.9.0
github.com/mazznoer/colorgrad v0.9.0

2
go.sum
View File

@ -187,6 +187,8 @@ github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=

View File

@ -14,6 +14,8 @@ import (
"github.com/davecgh/go-spew/spew"
"github.com/google/shlex"
"git.tcp.direct/kayos/ziggs/internal/common"
"git.tcp.direct/kayos/ziggs/internal/config"
"git.tcp.direct/kayos/ziggs/internal/ziggy"
@ -39,8 +41,12 @@ func executor(cmd string) {
go saveHist()
}
}()
cmd = strings.TrimSpace(cmd)
var args = strings.Fields(cmd)
args, err := shlex.Split(strings.TrimSpace(cmd))
if err != nil {
log.Error().Msgf("error parsing command: %s", err)
status = 1
return
}
if len(args) == 0 {
return
}

View File

@ -218,7 +218,11 @@ func cmdSet(bridge *ziggy.Bridge, args []string) error {
actions = append(actions, func() error {
err := target.Scene(targetScene)
if err != nil {
err = fmt.Errorf("failed to set scene: %w", err)
targetScene = ziggy.GetSceneMap()[targetScene].ID
err = target.Scene(targetScene)
if err != nil {
err = fmt.Errorf("failed to set scene: %w", err)
}
}
return err
})

View File

@ -55,3 +55,27 @@ func GetGroupMap() map[string]*huego.Group {
}
return groupMap
}
func GetSceneMap() map[string]*huego.Scene {
var sceneMap = make(map[string]*huego.Scene)
for _, c := range Lucifer.Bridges {
scs, err := c.GetScenes()
if err != nil {
log.Warn().Msgf("error getting groups on bridge %s: %v", c.ID, err)
continue
}
for _, s := range scs {
group, gerr := c.GetScene(s.ID)
if gerr != nil {
log.Warn().Msgf("failed to get pointer for scene %s on bridge %s: %v", s.Name, c.ID, gerr)
continue
}
if _, ok := sceneMap[s.Name]; ok {
log.Warn().Msgf("duplicate scene name %s on bridge %s - please rename", s.Name, c.ID)
continue
}
sceneMap[s.Name] = group
}
}
return sceneMap
}

3
vendor/modules.txt vendored
View File

@ -58,6 +58,9 @@ github.com/gliderlabs/ssh
# github.com/gofrs/flock v0.8.0
## explicit
github.com/gofrs/flock
# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
## explicit; go 1.13
github.com/google/shlex
# github.com/hashicorp/errwrap v1.0.0
## explicit
github.com/hashicorp/errwrap