-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
117 lines (101 loc) · 2.17 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package main
import (
"fmt"
"log"
"net/http"
"net/http/cookiejar"
"os"
"github.com/knei-knurow/dondu/api"
"github.com/urfave/cli/v2"
)
var (
username string
password string
)
func init() {
log.SetFlags(0)
log.SetPrefix("dondu: ")
username = os.Getenv("DONDU_USERNAME")
password = os.Getenv("DONDU_PASSWORD")
var err error
http.DefaultClient.Jar, err = cookiejar.New(nil)
if err != nil {
log.Fatalln("failed to create cookie jar")
}
}
func main() {
var err error
app := &cli.App{
Name: "dondu",
Usage: "Easily control our switchboard from the command line.",
Action: func(c *cli.Context) error {
log.Println("no commands passed")
return nil
},
Commands: []*cli.Command{
&enableCommand,
&disableCommand,
},
}
err = app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
var enableCommand = cli.Command{
Name: "enable",
Usage: "enable socket",
Flags: []cli.Flag{
&cli.IntFlag{
Name: "socket",
Aliases: []string{"s"},
Value: -1,
Usage: "number of the socket to enable",
},
&cli.IntFlag{
Name: "time",
Aliases: []string{"t"},
Value: 30,
Usage: "time after which to disable the socket (minutes)",
},
},
Action: func(c *cli.Context) error {
err := api.Login(username, password)
if err != nil {
return fmt.Errorf("login: %v", err)
}
socket := c.Int("socket")
minutes := c.Int("time")
err = api.Update(socket, true, minutes)
if err != nil {
return fmt.Errorf("enable socket %d for %d minutes: %v", socket, minutes, err)
}
log.Printf("enabled socket %d for %d minutes\n", socket, minutes)
return nil
},
}
var disableCommand = cli.Command{
Name: "disable",
Usage: "disable socket",
Flags: []cli.Flag{
&cli.IntFlag{
Name: "socket",
Aliases: []string{"s"},
Value: -1,
Usage: "number of the socket to disable",
},
},
Action: func(c *cli.Context) error {
err := api.Login(username, password)
if err != nil {
return fmt.Errorf("login: %v", err)
}
socket := c.Int("socket")
err = api.Update(socket, false, 0)
if err != nil {
return fmt.Errorf("disable socket %d: %v", socket, err)
}
log.Printf("disabled socket %d\n", socket)
return nil
},
}