-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathconfig.go
More file actions
174 lines (132 loc) · 3.81 KB
/
config.go
File metadata and controls
174 lines (132 loc) · 3.81 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package parser
import (
"github.com/deis/workflow/client/cmd"
docopt "github.com/docopt/docopt-go"
)
// Config routes config commands to their specific function.
func Config(argv []string) error {
usage := `
Valid commands for config:
config:list list environment variables for an app
config:set set environment variables for an app
config:unset unset environment variables for an app
config:pull extract environment variables to .env
config:push set environment variables from .env
Use 'deis help [command]' to learn more.
`
switch argv[0] {
case "config:list":
return configList(argv)
case "config:set":
return configSet(argv)
case "config:unset":
return configUnset(argv)
case "config:pull":
return configPull(argv)
case "config:push":
return configPush(argv)
default:
if printHelp(argv, usage) {
return nil
}
if argv[0] == "config" {
argv[0] = "config:list"
return configList(argv)
}
PrintUsage()
return nil
}
}
func configList(argv []string) error {
usage := `
Lists environment variables for an application.
Usage: deis config:list [options]
Options:
--oneline
print output on one line.
-a --app=<app>
the uniquely identifiable name of the application.
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmd.ConfigList(safeGetValue(args, "--app"), args["--oneline"].(bool))
}
func configSet(argv []string) error {
usage := `
Sets environment variables for an application.
Usage: deis config:set <var>=<value> [<var>=<value>...] [options]
Arguments:
<var>
the uniquely identifiable name for the environment variable.
<value>
the value of said environment variable.
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
}
return cmd.ConfigSet(safeGetValue(args, "--app"), args["<var>=<value>"].([]string))
}
func configUnset(argv []string) error {
usage := `
Unsets an environment variable for an application.
Usage: deis config:unset <key>... [options]
Arguments:
<key>
the variable to remove from the application's environment.
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
}
return cmd.ConfigUnset(safeGetValue(args, "--app"), args["<key>"].([]string))
}
func configPull(argv []string) error {
usage := `
Extract all environment variables from an application for local use.
Your environment will be stored locally in a file named .env. This file can be
read by foreman to load the local environment for your app.
Usage: deis config:pull [options]
Options:
-a --app=<app>
The application that you wish to pull from
-i --interactive
Prompts for each value to be overwritten
-o --overwrite
Allows you to have the pull overwrite keys in .env
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
app := safeGetValue(args, "--app")
interactive := args["--interactive"].(bool)
overwrite := args["--overwrite"].(bool)
return cmd.ConfigPull(app, interactive, overwrite)
}
func configPush(argv []string) error {
usage := `
Sets environment variables for an application.
The environment is read from <path>. This file can be read by foreman
to load the local environment for your app.
Usage: deis config:push [options]
Options:
-a --app=<app>
the uniquely identifiable name for the application.
-p <path>, --path=<path>
a path leading to an environment file [default: .env]
`
args, err := docopt.Parse(usage, argv, true, "", false, true)
if err != nil {
return err
}
return cmd.ConfigPush(safeGetValue(args, "--app"), safeGetValue(args, "--path"))
}