Feat: support quotes + Feat: call scene by name
This commit is contained in:
parent
c15ffeab6f
commit
f525b859ed
1
go.mod
1
go.mod
|
@ -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
2
go.sum
|
@ -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=
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
})
|
})
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue