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/davecgh/go-spew v1.1.1
github.com/dhamith93/systats v0.2.0 github.com/dhamith93/systats v0.2.0
github.com/gliderlabs/ssh v0.3.5 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/lucasb-eyer/go-colorful v1.2.0
github.com/manifoldco/promptui v0.9.0 github.com/manifoldco/promptui v0.9.0
github.com/mazznoer/colorgrad 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-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/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/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/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.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= 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/davecgh/go-spew/spew"
"github.com/google/shlex"
"git.tcp.direct/kayos/ziggs/internal/common" "git.tcp.direct/kayos/ziggs/internal/common"
"git.tcp.direct/kayos/ziggs/internal/config" "git.tcp.direct/kayos/ziggs/internal/config"
"git.tcp.direct/kayos/ziggs/internal/ziggy" "git.tcp.direct/kayos/ziggs/internal/ziggy"
@ -39,8 +41,12 @@ func executor(cmd string) {
go saveHist() go saveHist()
} }
}() }()
cmd = strings.TrimSpace(cmd) args, err := shlex.Split(strings.TrimSpace(cmd))
var args = strings.Fields(cmd) if err != nil {
log.Error().Msgf("error parsing command: %s", err)
status = 1
return
}
if len(args) == 0 { if len(args) == 0 {
return return
} }

View File

@ -218,7 +218,11 @@ func cmdSet(bridge *ziggy.Bridge, args []string) error {
actions = append(actions, func() error { actions = append(actions, func() error {
err := target.Scene(targetScene) err := target.Scene(targetScene)
if err != nil { 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 return err
}) })

View File

@ -55,3 +55,27 @@ func GetGroupMap() map[string]*huego.Group {
} }
return groupMap 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 # github.com/gofrs/flock v0.8.0
## explicit ## explicit
github.com/gofrs/flock 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 # github.com/hashicorp/errwrap v1.0.0
## explicit ## explicit
github.com/hashicorp/errwrap github.com/hashicorp/errwrap