aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-10-13 00:50:10 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-10-13 00:50:10 +0200
commit5417f3e0bf137a95d30cec9cb632bcc245ce1e85 (patch)
tree565cd49b9b5530448f596bd33ba7d74777247a3e /cmd
parent66996dc337ce7f8a20814da28f39b6e6dc435be0 (diff)
cmd
Diffstat (limited to 'cmd')
-rw-r--r--cmd/poll/main.go21
-rw-r--r--cmd/runcmd/main.go61
2 files changed, 82 insertions, 0 deletions
diff --git a/cmd/poll/main.go b/cmd/poll/main.go
new file mode 100644
index 0000000..bb19921
--- /dev/null
+++ b/cmd/poll/main.go
@@ -0,0 +1,21 @@
+package main
+
+import (
+ "fmt"
+ "log"
+
+ "dim13.org/redbutton"
+)
+
+func main() {
+ dev, err := redbutton.Open()
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer dev.Close()
+
+ state := redbutton.Poll(dev)
+ for {
+ fmt.Println(<-state)
+ }
+}
diff --git a/cmd/runcmd/main.go b/cmd/runcmd/main.go
new file mode 100644
index 0000000..e2e5b52
--- /dev/null
+++ b/cmd/runcmd/main.go
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "log"
+ "os"
+ "os/exec"
+
+ "dim13.org/redbutton"
+)
+
+type StateFn func(redbutton.Button) StateFn
+
+func Init(b redbutton.Button) StateFn {
+ if b == redbutton.Armed {
+ log.Println("Ready...")
+ return Armed
+ }
+ return Init
+}
+
+func Armed(b redbutton.Button) StateFn {
+ if b == redbutton.Pressed {
+ log.Println("Go!")
+ go Exec(os.Args[1:])
+ return Reset
+ }
+ return Init
+}
+
+func Reset(b redbutton.Button) StateFn {
+ if b == redbutton.Closed {
+ return Init
+ }
+ return Reset
+}
+
+func Exec(args []string) {
+ cmd := exec.Command(args[0], args[1:]...)
+ out, err := cmd.CombinedOutput()
+ if err != nil {
+ log.Fatal(err)
+ }
+ log.Println(string(out))
+}
+
+func main() {
+ if len(os.Args) < 2 {
+ log.Fatal("Usage: ", os.Args[0], " <command>")
+ }
+
+ dev, err := redbutton.Open()
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer dev.Close()
+
+ state := redbutton.Poll(dev)
+ for stateFn := Init; stateFn != nil; {
+ stateFn = stateFn(<-state)
+ }
+}