-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathgateways.go
More file actions
133 lines (104 loc) · 3.08 KB
/
gateways.go
File metadata and controls
133 lines (104 loc) · 3.08 KB
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package parser
import (
docopt "github.com/docopt/docopt-go"
"github.com/drycc/workflow-cli/cmd"
)
// Gateways gateways commands to their specific function.
func Gateways(argv []string, cmdr cmd.Commander) error {
usage := `
Valid commands for gateways:
gateways:add create gateways for an application
gateways:list list application gateways
gateways:remove remove gateways from an application
Use 'drycc help [command]' to learn more.
`
switch argv[0] {
case "gateways:add":
return gatewaysAdd(argv, cmdr)
case "gateways:list":
return gatewaysList(argv, cmdr)
case "gateways:remove":
return gatewaysRemove(argv, cmdr)
default:
if printHelp(argv, usage) {
return nil
}
if argv[0] == "gateways" {
argv[0] = "gateways:list"
return gatewaysList(argv, cmdr)
}
PrintUsage(cmdr)
return nil
}
}
func gatewaysAdd(argv []string, cmdr cmd.Commander) error {
usage := `
Creates gateways for an application and binds it to allow listener of the main app domain
Usage: drycc gateways:add <name> --port=<port> --protocol=<protocol> [options]
Arguments:
<name>
the gateway name.
<port>
Port is the network port, the listener expects to receive.
<protocol>
Protocol specifies the network protocol this listener expects to receive. Supports "TCP", "UDP", TLS, "HTTP", and "HTTPS".
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
app := safeGetValue(args, "--app")
name := safeGetValue(args, "<name>")
port := safeGetInt(args, "--port")
protocol := safeGetValue(args, "--protocol")
return cmdr.GatewaysAdd(app, name, port, protocol)
}
func gatewaysList(argv []string, cmdr cmd.Commander) error {
usage := `
Lists gateways for an application
Usage: drycc gateways:list [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
-l --limit=<num>
the maximum number of results to display, defaults to config setting
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
results, err := responseLimit(safeGetValue(args, "--limit"))
if err != nil {
return err
}
app := safeGetValue(args, "--app")
return cmdr.GatewaysList(app, results)
}
func gatewaysRemove(argv []string, cmdr cmd.Commander) error {
usage := `
Deletes specific gateway for application
Usage: drycc gateways:remove <name> --port=<port> --protocol=<protocol> [options]
Arguments:
<name>
the gateway name.
<port>
Port is the network port, the listener expects to receive.
<protocol>
Protocol specifies the network protocol this listener expects to receive.
Options:
-a --app=<app>
the uniquely identifiable name for the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
app := safeGetValue(args, "--app")
name := safeGetValue(args, "<name>")
port := safeGetInt(args, "--port")
protocol := safeGetValue(args, "--protocol")
return cmdr.GatewaysRemove(app, name, port, protocol)
}