noolite-cli.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "flag"
  4. "github.com/dedkovd/noolite"
  5. )
  6. func main() {
  7. channel := flag.Int("channel", -1, "Noolite adapter channel")
  8. command := flag.String("command", "", "Command")
  9. value := flag.Int("val", 0, "Set value")
  10. red := flag.Int("r", 0, "Red channel")
  11. green := flag.Int("g", 0, "Green channel")
  12. blue := flag.Int("b", 0, "Blue channel")
  13. flag.Parse()
  14. if *channel == -1 {
  15. panic("Channel was not set")
  16. }
  17. if *command == "" {
  18. panic("Command was not set")
  19. }
  20. n, err := noolite.DefaultNooliteAdapter()
  21. if err != nil {
  22. panic(err)
  23. }
  24. defer n.Close()
  25. if *command == "set" {
  26. if *value != 0 {
  27. err = n.SetBrightnesValue(*channel, *value)
  28. } else if *red != 0 || *green != 0 || *blue != 0 {
  29. err = n.SetBrightnesValues(*channel, *red, *green, *blue)
  30. } else {
  31. panic("Need some value")
  32. }
  33. } else {
  34. commands := map[string]func(int) error{
  35. "on": n.On,
  36. "off": n.Off,
  37. "switch": n.Switch,
  38. "decraseBrightnes": n.DecraseBrightnes,
  39. "incarseBrightnes": n.IncraseBrightnes,
  40. "invertBrightnes": n.InvertBrightnes,
  41. }
  42. cmd, ok := commands[*command]
  43. if !ok {
  44. panic("Command not found")
  45. }
  46. err = cmd(*channel)
  47. }
  48. if err != nil {
  49. panic(err)
  50. }
  51. }