Merge lp:~dave-cheney/juju-core/102-cmd-init-context into lp:~juju/juju-core/trunk
- 102-cmd-init-context
- Merge into trunk
Status: | Work in progress |
---|---|
Proposed branch: | lp:~dave-cheney/juju-core/102-cmd-init-context |
Merge into: | lp:~juju/juju-core/trunk |
Diff against target: |
797 lines (+91/-75) 43 files modified
cmd/cmd.go (+2/-2) cmd/filevar.go (+11/-2) cmd/juju/addunit.go (+1/-1) cmd/juju/addunit_test.go (+3/-2) cmd/juju/bootstrap.go (+1/-1) cmd/juju/cmd_test.go (+19/-18) cmd/juju/deploy.go (+2/-2) cmd/juju/deploy_test.go (+3/-2) cmd/juju/destroyenvironment.go (+1/-1) cmd/juju/expose.go (+1/-1) cmd/juju/expose_test.go (+3/-2) cmd/juju/get.go (+1/-1) cmd/juju/set.go (+3/-3) cmd/juju/status.go (+1/-1) cmd/juju/unexpose.go (+1/-1) cmd/juju/unexpose_test.go (+3/-2) cmd/juju/upgradejuju.go (+1/-1) cmd/juju/upgradejuju_test.go (+6/-4) cmd/jujuc/main_test.go (+1/-1) cmd/jujuc/server/config-get.go (+1/-1) cmd/jujuc/server/config-get_test.go (+1/-1) cmd/jujuc/server/juju-log.go (+1/-1) cmd/jujuc/server/juju-log_test.go (+1/-1) cmd/jujuc/server/ports.go (+1/-1) cmd/jujuc/server/ports_test.go (+1/-1) cmd/jujuc/server/relation-get.go (+1/-1) cmd/jujuc/server/relation-ids.go (+1/-1) cmd/jujuc/server/relation-list.go (+1/-1) cmd/jujuc/server/relation-set.go (+1/-1) cmd/jujuc/server/relation-set_test.go (+1/-1) cmd/jujuc/server/server_test.go (+1/-1) cmd/jujuc/server/unit-get.go (+1/-1) cmd/jujuc/server/unit-get_test.go (+2/-2) cmd/jujud/bootstrap.go (+1/-1) cmd/jujud/machine.go (+1/-1) cmd/jujud/provisioning.go (+1/-1) cmd/jujud/unit.go (+1/-1) cmd/jujud/util_test.go (+1/-1) cmd/jujud/version.go (+1/-1) cmd/output_test.go (+1/-1) cmd/supercommand.go (+2/-2) cmd/supercommand_test.go (+2/-2) cmd/util_test.go (+1/-1) |
To merge this branch: | bzr merge lp:~dave-cheney/juju-core/102-cmd-init-context |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
The Go Language Gophers | Pending | ||
Review via email: mp+124899@code.launchpad.net |
Commit message
Description of the change
cmd: add cmd.Context to command.Init
Pass cmd.Context to command.Init. This is mostly unused, although most invocations of command.Run do not use their Context either.
Unmerged revisions
- 519. By Dave Cheney
-
context strawman
- 518. By Dave Cheney
-
add context to command.init
- 517. By Dave Cheney
-
cmd/juju: add juju set subcommand
This proposal only includes the command parsing, a following CL
will include --config parsing and config updating.R=fwereade
CC=
https://codereview. appspot. com/6494131 - 516. By Aram Hăvărneanu
-
mstate: add services watcher
R=niemeyer
CC=
https://codereview. appspot. com/6496132 - 515. By Dave Cheney
-
mstate: fix ssh tests
Wait until the sshd process is listening before returning from sshDaemon()
R=rog
CC=
https://codereview. appspot. com/6497146 - 514. By Gustavo Niemeyer
-
mstate/watcher: fix trivial test race
R=dfc
CC=
https://codereview. appspot. com/6499126 - 513. By William Reade
-
update mstate charm usage
Service/Unit now have charm-related methods that match state
R=niemeyer
CC=
https://codereview. appspot. com/6506124 - 512. By Aram Hăvărneanu
-
mstate: improve error reporting in watcher test
R=niemeyer
CC=
https://codereview. appspot. com/6492131 - 511. By Aram Hăvărneanu
-
mstate: add machines watcher
R=niemeyer
CC=
https://codereview. appspot. com/6496131 - 510. By Dave Cheney
-
cmd: add FileVar flag and use it
PyJuJu had a nice construct that allowed a flag that was a file, or more
specifically the contents of a file to be handled nicely. As deploy ended
up implementing this, and I need it now for juju set, it made sense to
pretty it up.R=niemeyer
CC=
https://codereview. appspot. com/6490121
Preview Diff
1 | === modified file 'cmd/cmd.go' | |||
2 | --- cmd/cmd.go 2012-09-10 03:51:34 +0000 | |||
3 | +++ cmd/cmd.go 2012-09-18 11:54:19 +0000 | |||
4 | @@ -24,7 +24,7 @@ | |||
5 | 24 | 24 | ||
6 | 25 | // Init initializes the Command before running. The command may add options | 25 | // Init initializes the Command before running. The command may add options |
7 | 26 | // to f before processing args. | 26 | // to f before processing args. |
9 | 27 | Init(f *gnuflag.FlagSet, args []string) error | 27 | Init(f *gnuflag.FlagSet, args []string, ctx *Context) error |
10 | 28 | 28 | ||
11 | 29 | // Run will execute the Command as directed by the options and positional | 29 | // Run will execute the Command as directed by the options and positional |
12 | 30 | // arguments passed to Init. | 30 | // arguments passed to Init. |
13 | @@ -100,7 +100,7 @@ | |||
14 | 100 | func Main(c Command, ctx *Context, args []string) int { | 100 | func Main(c Command, ctx *Context, args []string) int { |
15 | 101 | f := gnuflag.NewFlagSet(c.Info().Name, gnuflag.ContinueOnError) | 101 | f := gnuflag.NewFlagSet(c.Info().Name, gnuflag.ContinueOnError) |
16 | 102 | f.SetOutput(ioutil.Discard) | 102 | f.SetOutput(ioutil.Discard) |
18 | 103 | if err := c.Init(f, args); err != nil { | 103 | if err := c.Init(f, args, ctx); err != nil { |
19 | 104 | if err == gnuflag.ErrHelp { | 104 | if err == gnuflag.ErrHelp { |
20 | 105 | ctx.Stderr.Write(c.Info().Help(f)) | 105 | ctx.Stderr.Write(c.Info().Help(f)) |
21 | 106 | return 0 | 106 | return 0 |
22 | 107 | 107 | ||
23 | === modified file 'cmd/filevar.go' | |||
24 | --- cmd/filevar.go 2012-09-17 14:05:50 +0000 | |||
25 | +++ cmd/filevar.go 2012-09-18 11:54:19 +0000 | |||
26 | @@ -3,19 +3,22 @@ | |||
27 | 3 | import ( | 3 | import ( |
28 | 4 | "io" | 4 | "io" |
29 | 5 | "os" | 5 | "os" |
30 | 6 | |||
31 | 7 | "launchpad.net/gnuflag" | ||
32 | 6 | ) | 8 | ) |
33 | 7 | 9 | ||
34 | 8 | // FileVar represents a path to a file. If the flag is | 10 | // FileVar represents a path to a file. If the flag is |
35 | 9 | // valid FileVar.ReadCloser will be non nil and FileVar | 11 | // valid FileVar.ReadCloser will be non nil and FileVar |
36 | 10 | // will be usable as an io.ReadCloser. | 12 | // will be usable as an io.ReadCloser. |
37 | 11 | type FileVar struct { | 13 | type FileVar struct { |
38 | 14 | ctx *Context | ||
39 | 12 | io.ReadCloser | 15 | io.ReadCloser |
40 | 13 | Path string | 16 | Path string |
41 | 14 | } | 17 | } |
42 | 15 | 18 | ||
44 | 16 | // Set opens the file. | 19 | // Set opens the file, resolving the path relative to Context.Dir |
45 | 17 | func (f *FileVar) Set(v string) error { | 20 | func (f *FileVar) Set(v string) error { |
47 | 18 | file, err := os.Open(v) | 21 | file, err := os.Open(f.ctx.AbsPath(v)) |
48 | 19 | if err != nil { | 22 | if err != nil { |
49 | 20 | return err | 23 | return err |
50 | 21 | } | 24 | } |
51 | @@ -28,3 +31,9 @@ | |||
52 | 28 | func (f *FileVar) String() string { | 31 | func (f *FileVar) String() string { |
53 | 29 | return f.Path | 32 | return f.Path |
54 | 30 | } | 33 | } |
55 | 34 | |||
56 | 35 | // AddFlags injects the command line flags into f. | ||
57 | 36 | func (f *FileVar) AddFlags(fs *gnuflag.FlagSet, name, desc string, ctx *Context) { | ||
58 | 37 | f.ctx = ctx | ||
59 | 38 | fs.Var(f, name, desc) | ||
60 | 39 | } | ||
61 | 31 | 40 | ||
62 | === modified file 'cmd/juju/addunit.go' | |||
63 | --- cmd/juju/addunit.go 2012-09-03 17:35:44 +0000 | |||
64 | +++ cmd/juju/addunit.go 2012-09-18 11:54:19 +0000 | |||
65 | @@ -19,7 +19,7 @@ | |||
66 | 19 | return &cmd.Info{"add-unit", "", "add a service unit", ""} | 19 | return &cmd.Info{"add-unit", "", "add a service unit", ""} |
67 | 20 | } | 20 | } |
68 | 21 | 21 | ||
70 | 22 | func (c *AddUnitCommand) Init(f *gnuflag.FlagSet, args []string) error { | 22 | func (c *AddUnitCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
71 | 23 | addEnvironFlags(&c.EnvName, f) | 23 | addEnvironFlags(&c.EnvName, f) |
72 | 24 | f.IntVar(&c.NumUnits, "n", 1, "number of service units to add") | 24 | f.IntVar(&c.NumUnits, "n", 1, "number of service units to add") |
73 | 25 | f.IntVar(&c.NumUnits, "num-units", 1, "") | 25 | f.IntVar(&c.NumUnits, "num-units", 1, "") |
74 | 26 | 26 | ||
75 | === modified file 'cmd/juju/addunit_test.go' | |||
76 | --- cmd/juju/addunit_test.go 2012-09-12 22:31:00 +0000 | |||
77 | +++ cmd/juju/addunit_test.go 2012-09-18 11:54:19 +0000 | |||
78 | @@ -16,9 +16,10 @@ | |||
79 | 16 | 16 | ||
80 | 17 | func runAddUnit(c *C, args ...string) error { | 17 | func runAddUnit(c *C, args ...string) error { |
81 | 18 | com := &AddUnitCommand{} | 18 | com := &AddUnitCommand{} |
83 | 19 | err := com.Init(newFlagSet(), args) | 19 | ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}} |
84 | 20 | err := com.Init(newFlagSet(), args, ctx) | ||
85 | 20 | c.Assert(err, IsNil) | 21 | c.Assert(err, IsNil) |
87 | 21 | return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}) | 22 | return com.Run(ctx) |
88 | 22 | } | 23 | } |
89 | 23 | 24 | ||
90 | 24 | func (s *AddUnitSuite) TestAddUnit(c *C) { | 25 | func (s *AddUnitSuite) TestAddUnit(c *C) { |
91 | 25 | 26 | ||
92 | === modified file 'cmd/juju/bootstrap.go' | |||
93 | --- cmd/juju/bootstrap.go 2012-09-03 14:07:19 +0000 | |||
94 | +++ cmd/juju/bootstrap.go 2012-09-18 11:54:19 +0000 | |||
95 | @@ -17,7 +17,7 @@ | |||
96 | 17 | return &cmd.Info{"bootstrap", "", "start up an environment from scratch", ""} | 17 | return &cmd.Info{"bootstrap", "", "start up an environment from scratch", ""} |
97 | 18 | } | 18 | } |
98 | 19 | 19 | ||
100 | 20 | func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string) error { | 20 | func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
101 | 21 | addEnvironFlags(&c.EnvName, f) | 21 | addEnvironFlags(&c.EnvName, f) |
102 | 22 | f.BoolVar(&c.UploadTools, "upload-tools", false, "upload local version of tools before bootstrapping") | 22 | f.BoolVar(&c.UploadTools, "upload-tools", false, "upload local version of tools before bootstrapping") |
103 | 23 | if err := f.Parse(true, args); err != nil { | 23 | if err := f.Parse(true, args); err != nil { |
104 | 24 | 24 | ||
105 | === modified file 'cmd/juju/cmd_test.go' | |||
106 | --- cmd/juju/cmd_test.go 2012-09-17 15:30:34 +0000 | |||
107 | +++ cmd/juju/cmd_test.go 2012-09-18 11:54:19 +0000 | |||
108 | @@ -1,9 +1,9 @@ | |||
109 | 1 | package main | 1 | package main |
110 | 2 | 2 | ||
111 | 3 | import ( | 3 | import ( |
112 | 4 | "bytes" | ||
113 | 4 | "net/http" | 5 | "net/http" |
114 | 5 | "os" | 6 | "os" |
115 | 6 | "path/filepath" | ||
116 | 7 | "reflect" | 7 | "reflect" |
117 | 8 | 8 | ||
118 | 9 | "launchpad.net/gnuflag" | 9 | "launchpad.net/gnuflag" |
119 | @@ -52,7 +52,7 @@ | |||
120 | 52 | // testInit checks that a command initialises correctly | 52 | // testInit checks that a command initialises correctly |
121 | 53 | // with the given set of arguments. | 53 | // with the given set of arguments. |
122 | 54 | func testInit(c *C, com cmd.Command, args []string, errPat string) { | 54 | func testInit(c *C, com cmd.Command, args []string, errPat string) { |
124 | 55 | err := com.Init(newFlagSet(), args) | 55 | err := com.Init(newFlagSet(), args, nil) |
125 | 56 | if errPat != "" { | 56 | if errPat != "" { |
126 | 57 | c.Assert(err, ErrorMatches, errPat) | 57 | c.Assert(err, ErrorMatches, errPat) |
127 | 58 | } else { | 58 | } else { |
128 | @@ -113,14 +113,15 @@ | |||
129 | 113 | go func() { | 113 | go func() { |
130 | 114 | // signal that we're done with this ops channel. | 114 | // signal that we're done with this ops channel. |
131 | 115 | defer dummy.Listen(nil) | 115 | defer dummy.Listen(nil) |
132 | 116 | ctx := cmd.DefaultContext() | ||
133 | 116 | 117 | ||
135 | 117 | err := com.Init(newFlagSet(), args) | 118 | err := com.Init(newFlagSet(), args, ctx) |
136 | 118 | if err != nil { | 119 | if err != nil { |
137 | 119 | errc <- err | 120 | errc <- err |
138 | 120 | return | 121 | return |
139 | 121 | } | 122 | } |
140 | 122 | 123 | ||
142 | 123 | err = com.Run(cmd.DefaultContext()) | 124 | err = com.Run(ctx) |
143 | 124 | errc <- err | 125 | errc <- err |
144 | 125 | }() | 126 | }() |
145 | 126 | return | 127 | return |
146 | @@ -213,9 +214,9 @@ | |||
147 | 213 | } | 214 | } |
148 | 214 | } | 215 | } |
149 | 215 | 216 | ||
151 | 216 | func initDeployCommand(args ...string) (*DeployCommand, error) { | 217 | func initDeployCommand(ctx *cmd.Context, args ...string) (*DeployCommand, error) { |
152 | 217 | com := &DeployCommand{} | 218 | com := &DeployCommand{} |
154 | 218 | return com, com.Init(newFlagSet(), args) | 219 | return com, com.Init(newFlagSet(), args, ctx) |
155 | 219 | } | 220 | } |
156 | 220 | 221 | ||
157 | 221 | func (*CmdSuite) TestDeployCommandInit(c *C) { | 222 | func (*CmdSuite) TestDeployCommandInit(c *C) { |
158 | @@ -224,31 +225,31 @@ | |||
159 | 224 | 225 | ||
160 | 225 | for _, t := range deployTests { | 226 | for _, t := range deployTests { |
161 | 226 | initExpectations(t.com) | 227 | initExpectations(t.com) |
163 | 227 | com, err := initDeployCommand(t.args...) | 228 | com, err := initDeployCommand(nil, t.args...) |
164 | 228 | c.Assert(err, IsNil) | 229 | c.Assert(err, IsNil) |
165 | 229 | c.Assert(com, DeepEquals, t.com) | 230 | c.Assert(com, DeepEquals, t.com) |
166 | 230 | } | 231 | } |
167 | 231 | 232 | ||
168 | 232 | // test --config path | 233 | // test --config path |
171 | 233 | dir := c.MkDir() | 234 | ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}} |
172 | 234 | path := filepath.Join(dir, "testconfig.yaml") | 235 | path := ctx.AbsPath("testconfig.yaml") |
173 | 235 | file, err := os.Create(path) | 236 | file, err := os.Create(path) |
174 | 236 | c.Assert(err, IsNil) | 237 | c.Assert(err, IsNil) |
175 | 237 | file.Close() | 238 | file.Close() |
177 | 238 | com, err := initDeployCommand("--config", path, "charm-name") | 239 | com, err := initDeployCommand(ctx, "--config", path, "charm-name") |
178 | 239 | c.Assert(err, IsNil) | 240 | c.Assert(err, IsNil) |
179 | 240 | defer com.Config.Close() | 241 | defer com.Config.Close() |
180 | 241 | c.Assert(com.Config.Path, Equals, path) | 242 | c.Assert(com.Config.Path, Equals, path) |
181 | 242 | c.Assert(com.Config.ReadCloser, NotNil) | 243 | c.Assert(com.Config.ReadCloser, NotNil) |
182 | 243 | 244 | ||
183 | 244 | // missing args | 245 | // missing args |
185 | 245 | _, err = initDeployCommand() | 246 | _, err = initDeployCommand(ctx) |
186 | 246 | c.Assert(err, ErrorMatches, "no charm specified") | 247 | c.Assert(err, ErrorMatches, "no charm specified") |
187 | 247 | 248 | ||
188 | 248 | // bad unit count | 249 | // bad unit count |
190 | 249 | _, err = initDeployCommand("charm-name", "--num-units", "0") | 250 | _, err = initDeployCommand(ctx, "charm-name", "--num-units", "0") |
191 | 250 | c.Assert(err, ErrorMatches, "must deploy at least one unit") | 251 | c.Assert(err, ErrorMatches, "must deploy at least one unit") |
193 | 251 | _, err = initDeployCommand("charm-name", "-n", "0") | 252 | _, err = initDeployCommand(ctx, "charm-name", "-n", "0") |
194 | 252 | c.Assert(err, ErrorMatches, "must deploy at least one unit") | 253 | c.Assert(err, ErrorMatches, "must deploy at least one unit") |
195 | 253 | 254 | ||
196 | 254 | // environment tested elsewhere | 255 | // environment tested elsewhere |
197 | @@ -256,7 +257,7 @@ | |||
198 | 256 | 257 | ||
199 | 257 | func initAddUnitCommand(args ...string) (*AddUnitCommand, error) { | 258 | func initAddUnitCommand(args ...string) (*AddUnitCommand, error) { |
200 | 258 | com := &AddUnitCommand{} | 259 | com := &AddUnitCommand{} |
202 | 259 | return com, com.Init(newFlagSet(), args) | 260 | return com, com.Init(newFlagSet(), args, nil) |
203 | 260 | } | 261 | } |
204 | 261 | 262 | ||
205 | 262 | func (*CmdSuite) TestAddUnitCommandInit(c *C) { | 263 | func (*CmdSuite) TestAddUnitCommandInit(c *C) { |
206 | @@ -275,7 +276,7 @@ | |||
207 | 275 | 276 | ||
208 | 276 | func initExposeCommand(args ...string) (*ExposeCommand, error) { | 277 | func initExposeCommand(args ...string) (*ExposeCommand, error) { |
209 | 277 | com := &ExposeCommand{} | 278 | com := &ExposeCommand{} |
211 | 278 | return com, com.Init(newFlagSet(), args) | 279 | return com, com.Init(newFlagSet(), args, nil) |
212 | 279 | } | 280 | } |
213 | 280 | 281 | ||
214 | 281 | func (*CmdSuite) TestExposeCommandInit(c *C) { | 282 | func (*CmdSuite) TestExposeCommandInit(c *C) { |
215 | @@ -288,7 +289,7 @@ | |||
216 | 288 | 289 | ||
217 | 289 | func initUnexposeCommand(args ...string) (*UnexposeCommand, error) { | 290 | func initUnexposeCommand(args ...string) (*UnexposeCommand, error) { |
218 | 290 | com := &UnexposeCommand{} | 291 | com := &UnexposeCommand{} |
220 | 291 | return com, com.Init(newFlagSet(), args) | 292 | return com, com.Init(newFlagSet(), args, nil) |
221 | 292 | } | 293 | } |
222 | 293 | 294 | ||
223 | 294 | func (*CmdSuite) TestUnexposeCommandInit(c *C) { | 295 | func (*CmdSuite) TestUnexposeCommandInit(c *C) { |
224 | @@ -301,7 +302,7 @@ | |||
225 | 301 | 302 | ||
226 | 302 | func initGetCommand(args ...string) (*GetCommand, error) { | 303 | func initGetCommand(args ...string) (*GetCommand, error) { |
227 | 303 | com := &GetCommand{} | 304 | com := &GetCommand{} |
229 | 304 | return com, com.Init(newFlagSet(), args) | 305 | return com, com.Init(newFlagSet(), args, nil) |
230 | 305 | } | 306 | } |
231 | 306 | 307 | ||
232 | 307 | func (*CmdSuite) TestGetCommandInit(c *C) { | 308 | func (*CmdSuite) TestGetCommandInit(c *C) { |
233 | @@ -312,7 +313,7 @@ | |||
234 | 312 | 313 | ||
235 | 313 | func initSetCommand(args ...string) (*SetCommand, error) { | 314 | func initSetCommand(args ...string) (*SetCommand, error) { |
236 | 314 | com := &SetCommand{} | 315 | com := &SetCommand{} |
238 | 315 | return com, com.Init(newFlagSet(), args) | 316 | return com, com.Init(newFlagSet(), args, nil) |
239 | 316 | } | 317 | } |
240 | 317 | 318 | ||
241 | 318 | func (*CmdSuite) TestSetCommandInit(c *C) { | 319 | func (*CmdSuite) TestSetCommandInit(c *C) { |
242 | 319 | 320 | ||
243 | === modified file 'cmd/juju/deploy.go' | |||
244 | --- cmd/juju/deploy.go 2012-09-17 14:05:50 +0000 | |||
245 | +++ cmd/juju/deploy.go 2012-09-18 11:54:19 +0000 | |||
246 | @@ -46,13 +46,13 @@ | |||
247 | 46 | } | 46 | } |
248 | 47 | } | 47 | } |
249 | 48 | 48 | ||
251 | 49 | func (c *DeployCommand) Init(f *gnuflag.FlagSet, args []string) error { | 49 | func (c *DeployCommand) Init(f *gnuflag.FlagSet, args []string, ctx *cmd.Context) error { |
252 | 50 | addEnvironFlags(&c.EnvName, f) | 50 | addEnvironFlags(&c.EnvName, f) |
253 | 51 | f.IntVar(&c.NumUnits, "n", 1, "number of service units to deploy for principal charms") | 51 | f.IntVar(&c.NumUnits, "n", 1, "number of service units to deploy for principal charms") |
254 | 52 | f.IntVar(&c.NumUnits, "num-units", 1, "") | 52 | f.IntVar(&c.NumUnits, "num-units", 1, "") |
255 | 53 | f.BoolVar(&c.BumpRevision, "u", false, "increment local charm directory revision") | 53 | f.BoolVar(&c.BumpRevision, "u", false, "increment local charm directory revision") |
256 | 54 | f.BoolVar(&c.BumpRevision, "upgrade", false, "") | 54 | f.BoolVar(&c.BumpRevision, "upgrade", false, "") |
258 | 55 | f.Var(&c.Config, "config", "path to yaml-formatted service config") | 55 | c.Config.AddFlags(f, "config", "path to yaml-formatted service config", ctx) |
259 | 56 | f.StringVar(&c.RepoPath, "repository", os.Getenv("JUJU_REPOSITORY"), "local charm repository") | 56 | f.StringVar(&c.RepoPath, "repository", os.Getenv("JUJU_REPOSITORY"), "local charm repository") |
260 | 57 | // TODO --constraints | 57 | // TODO --constraints |
261 | 58 | if err := f.Parse(true, args); err != nil { | 58 | if err := f.Parse(true, args); err != nil { |
262 | 59 | 59 | ||
263 | === modified file 'cmd/juju/deploy_test.go' | |||
264 | --- cmd/juju/deploy_test.go 2012-09-12 22:31:00 +0000 | |||
265 | +++ cmd/juju/deploy_test.go 2012-09-18 11:54:19 +0000 | |||
266 | @@ -111,9 +111,10 @@ | |||
267 | 111 | 111 | ||
268 | 112 | func runDeploy(c *C, args ...string) error { | 112 | func runDeploy(c *C, args ...string) error { |
269 | 113 | com := &DeployCommand{} | 113 | com := &DeployCommand{} |
271 | 114 | err := com.Init(newFlagSet(), args) | 114 | ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}} |
272 | 115 | err := com.Init(newFlagSet(), args, ctx) | ||
273 | 115 | c.Assert(err, IsNil) | 116 | c.Assert(err, IsNil) |
275 | 116 | return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}) | 117 | return com.Run(ctx) |
276 | 117 | } | 118 | } |
277 | 118 | 119 | ||
278 | 119 | func (s *DeploySuite) TestCharmDir(c *C) { | 120 | func (s *DeploySuite) TestCharmDir(c *C) { |
279 | 120 | 121 | ||
280 | === modified file 'cmd/juju/destroyenvironment.go' | |||
281 | --- cmd/juju/destroyenvironment.go 2012-09-06 10:44:58 +0000 | |||
282 | +++ cmd/juju/destroyenvironment.go 2012-09-18 11:54:19 +0000 | |||
283 | @@ -19,7 +19,7 @@ | |||
284 | 19 | } | 19 | } |
285 | 20 | } | 20 | } |
286 | 21 | 21 | ||
288 | 22 | func (c *DestroyEnvironmentCommand) Init(f *gnuflag.FlagSet, args []string) error { | 22 | func (c *DestroyEnvironmentCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
289 | 23 | addEnvironFlags(&c.EnvName, f) | 23 | addEnvironFlags(&c.EnvName, f) |
290 | 24 | if err := f.Parse(true, args); err != nil { | 24 | if err := f.Parse(true, args); err != nil { |
291 | 25 | return err | 25 | return err |
292 | 26 | 26 | ||
293 | === modified file 'cmd/juju/expose.go' | |||
294 | --- cmd/juju/expose.go 2012-09-03 17:35:44 +0000 | |||
295 | +++ cmd/juju/expose.go 2012-09-18 11:54:19 +0000 | |||
296 | @@ -18,7 +18,7 @@ | |||
297 | 18 | return &cmd.Info{"expose", "", "expose a service", ""} | 18 | return &cmd.Info{"expose", "", "expose a service", ""} |
298 | 19 | } | 19 | } |
299 | 20 | 20 | ||
301 | 21 | func (c *ExposeCommand) Init(f *gnuflag.FlagSet, args []string) error { | 21 | func (c *ExposeCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
302 | 22 | addEnvironFlags(&c.EnvName, f) | 22 | addEnvironFlags(&c.EnvName, f) |
303 | 23 | if err := f.Parse(true, args); err != nil { | 23 | if err := f.Parse(true, args); err != nil { |
304 | 24 | return err | 24 | return err |
305 | 25 | 25 | ||
306 | === modified file 'cmd/juju/expose_test.go' | |||
307 | --- cmd/juju/expose_test.go 2012-09-12 22:31:00 +0000 | |||
308 | +++ cmd/juju/expose_test.go 2012-09-18 11:54:19 +0000 | |||
309 | @@ -16,9 +16,10 @@ | |||
310 | 16 | 16 | ||
311 | 17 | func runExpose(c *C, args ...string) error { | 17 | func runExpose(c *C, args ...string) error { |
312 | 18 | com := &ExposeCommand{} | 18 | com := &ExposeCommand{} |
314 | 19 | err := com.Init(newFlagSet(), args) | 19 | ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}} |
315 | 20 | err := com.Init(newFlagSet(), args, ctx) | ||
316 | 20 | c.Assert(err, IsNil) | 21 | c.Assert(err, IsNil) |
318 | 21 | return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}) | 22 | return com.Run(ctx) |
319 | 22 | } | 23 | } |
320 | 23 | 24 | ||
321 | 24 | func (s *ExposeSuite) assertExposed(c *C, service string) { | 25 | func (s *ExposeSuite) assertExposed(c *C, service string) { |
322 | 25 | 26 | ||
323 | === modified file 'cmd/juju/get.go' | |||
324 | --- cmd/juju/get.go 2012-09-14 05:28:04 +0000 | |||
325 | +++ cmd/juju/get.go 2012-09-18 11:54:19 +0000 | |||
326 | @@ -21,7 +21,7 @@ | |||
327 | 21 | return &cmd.Info{"get", "", "get service config options", ""} | 21 | return &cmd.Info{"get", "", "get service config options", ""} |
328 | 22 | } | 22 | } |
329 | 23 | 23 | ||
331 | 24 | func (c *GetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 24 | func (c *GetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
332 | 25 | addEnvironFlags(&c.EnvName, f) | 25 | addEnvironFlags(&c.EnvName, f) |
333 | 26 | // TODO(dfc) add json formatting ? | 26 | // TODO(dfc) add json formatting ? |
334 | 27 | c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{ | 27 | c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{ |
335 | 28 | 28 | ||
336 | === modified file 'cmd/juju/set.go' | |||
337 | --- cmd/juju/set.go 2012-09-13 07:22:45 +0000 | |||
338 | +++ cmd/juju/set.go 2012-09-18 11:54:19 +0000 | |||
339 | @@ -14,7 +14,7 @@ | |||
340 | 14 | EnvName string | 14 | EnvName string |
341 | 15 | ServiceName string | 15 | ServiceName string |
342 | 16 | Options []Option | 16 | Options []Option |
344 | 17 | ConfPath string | 17 | Config cmd.FileVar |
345 | 18 | } | 18 | } |
346 | 19 | 19 | ||
347 | 20 | type Option struct { | 20 | type Option struct { |
348 | @@ -25,9 +25,9 @@ | |||
349 | 25 | return &cmd.Info{"set", "", "set service config options", ""} | 25 | return &cmd.Info{"set", "", "set service config options", ""} |
350 | 26 | } | 26 | } |
351 | 27 | 27 | ||
353 | 28 | func (c *SetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 28 | func (c *SetCommand) Init(f *gnuflag.FlagSet, args []string, ctx *cmd.Context) error { |
354 | 29 | addEnvironFlags(&c.EnvName, f) | 29 | addEnvironFlags(&c.EnvName, f) |
356 | 30 | f.StringVar(&c.ConfPath, "config", "", "path to yaml-formatted service config") | 30 | c.Config.AddFlags(f, "config", "path to yaml-formatted service config", ctx) |
357 | 31 | if err := f.Parse(true, args); err != nil { | 31 | if err := f.Parse(true, args); err != nil { |
358 | 32 | return err | 32 | return err |
359 | 33 | } | 33 | } |
360 | 34 | 34 | ||
361 | === modified file 'cmd/juju/status.go' | |||
362 | --- cmd/juju/status.go 2012-09-04 14:26:44 +0000 | |||
363 | +++ cmd/juju/status.go 2012-09-18 11:54:19 +0000 | |||
364 | @@ -24,7 +24,7 @@ | |||
365 | 24 | } | 24 | } |
366 | 25 | } | 25 | } |
367 | 26 | 26 | ||
369 | 27 | func (c *StatusCommand) Init(f *gnuflag.FlagSet, args []string) error { | 27 | func (c *StatusCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
370 | 28 | addEnvironFlags(&c.EnvName, f) | 28 | addEnvironFlags(&c.EnvName, f) |
371 | 29 | c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{ | 29 | c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{ |
372 | 30 | "yaml": cmd.FormatYaml, | 30 | "yaml": cmd.FormatYaml, |
373 | 31 | 31 | ||
374 | === modified file 'cmd/juju/unexpose.go' | |||
375 | --- cmd/juju/unexpose.go 2012-09-03 17:35:44 +0000 | |||
376 | +++ cmd/juju/unexpose.go 2012-09-18 11:54:19 +0000 | |||
377 | @@ -18,7 +18,7 @@ | |||
378 | 18 | return &cmd.Info{"unexpose", "", "unexpose a service", ""} | 18 | return &cmd.Info{"unexpose", "", "unexpose a service", ""} |
379 | 19 | } | 19 | } |
380 | 20 | 20 | ||
382 | 21 | func (c *UnexposeCommand) Init(f *gnuflag.FlagSet, args []string) error { | 21 | func (c *UnexposeCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
383 | 22 | addEnvironFlags(&c.EnvName, f) | 22 | addEnvironFlags(&c.EnvName, f) |
384 | 23 | if err := f.Parse(true, args); err != nil { | 23 | if err := f.Parse(true, args); err != nil { |
385 | 24 | return err | 24 | return err |
386 | 25 | 25 | ||
387 | === modified file 'cmd/juju/unexpose_test.go' | |||
388 | --- cmd/juju/unexpose_test.go 2012-09-12 22:31:00 +0000 | |||
389 | +++ cmd/juju/unexpose_test.go 2012-09-18 11:54:19 +0000 | |||
390 | @@ -16,9 +16,10 @@ | |||
391 | 16 | 16 | ||
392 | 17 | func runUnexpose(c *C, args ...string) error { | 17 | func runUnexpose(c *C, args ...string) error { |
393 | 18 | com := &UnexposeCommand{} | 18 | com := &UnexposeCommand{} |
395 | 19 | err := com.Init(newFlagSet(), args) | 19 | ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}} |
396 | 20 | err := com.Init(newFlagSet(), args, ctx) | ||
397 | 20 | c.Assert(err, IsNil) | 21 | c.Assert(err, IsNil) |
399 | 21 | return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}) | 22 | return com.Run(ctx) |
400 | 22 | } | 23 | } |
401 | 23 | 24 | ||
402 | 24 | func (s *UnexposeSuite) assertExposed(c *C, service string, expected bool) { | 25 | func (s *UnexposeSuite) assertExposed(c *C, service string, expected bool) { |
403 | 25 | 26 | ||
404 | === modified file 'cmd/juju/upgradejuju.go' | |||
405 | --- cmd/juju/upgradejuju.go 2012-09-12 17:15:00 +0000 | |||
406 | +++ cmd/juju/upgradejuju.go 2012-09-18 11:54:19 +0000 | |||
407 | @@ -28,7 +28,7 @@ | |||
408 | 28 | return &cmd.Info{"upgrade-juju", "", "upgrade the tools in a juju environment", ""} | 28 | return &cmd.Info{"upgrade-juju", "", "upgrade the tools in a juju environment", ""} |
409 | 29 | } | 29 | } |
410 | 30 | 30 | ||
412 | 31 | func (c *UpgradeJujuCommand) Init(f *gnuflag.FlagSet, args []string) error { | 31 | func (c *UpgradeJujuCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
413 | 32 | addEnvironFlags(&c.EnvName, f) | 32 | addEnvironFlags(&c.EnvName, f) |
414 | 33 | var vers string | 33 | var vers string |
415 | 34 | f.BoolVar(&c.UploadTools, "upload-tools", false, "upload local version of tools") | 34 | f.BoolVar(&c.UploadTools, "upload-tools", false, "upload local version of tools") |
416 | 35 | 35 | ||
417 | === modified file 'cmd/juju/upgradejuju_test.go' | |||
418 | --- cmd/juju/upgradejuju_test.go 2012-09-12 17:15:00 +0000 | |||
419 | +++ cmd/juju/upgradejuju_test.go 2012-09-18 11:54:19 +0000 | |||
420 | @@ -164,12 +164,13 @@ | |||
421 | 164 | 164 | ||
422 | 165 | // Run the command | 165 | // Run the command |
423 | 166 | com := &UpgradeJujuCommand{} | 166 | com := &UpgradeJujuCommand{} |
425 | 167 | err = com.Init(newFlagSet(), test.args) | 167 | ctx := &cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard} |
426 | 168 | err = com.Init(newFlagSet(), test.args, ctx) | ||
427 | 168 | if test.expectInitErr != "" { | 169 | if test.expectInitErr != "" { |
428 | 169 | c.Check(err, ErrorMatches, test.expectInitErr) | 170 | c.Check(err, ErrorMatches, test.expectInitErr) |
429 | 170 | continue | 171 | continue |
430 | 171 | } | 172 | } |
432 | 172 | err = com.Run(&cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard}) | 173 | err = com.Run(ctx) |
433 | 173 | if test.expectErr != "" { | 174 | if test.expectErr != "" { |
434 | 174 | c.Check(err, ErrorMatches, test.expectErr) | 175 | c.Check(err, ErrorMatches, test.expectErr) |
435 | 175 | continue | 176 | continue |
436 | @@ -212,9 +213,10 @@ | |||
437 | 212 | func (s *UpgradeJujuSuite) TestUpgradeJujuWithRealPutTools(c *C) { | 213 | func (s *UpgradeJujuSuite) TestUpgradeJujuWithRealPutTools(c *C) { |
438 | 213 | s.Reset(c) | 214 | s.Reset(c) |
439 | 214 | com := &UpgradeJujuCommand{} | 215 | com := &UpgradeJujuCommand{} |
441 | 215 | err := com.Init(newFlagSet(), []string{"--upload-tools", "--dev"}) | 216 | ctx := &cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard} |
442 | 217 | err := com.Init(newFlagSet(), []string{"--upload-tools", "--dev"}, ctx) | ||
443 | 216 | c.Assert(err, IsNil) | 218 | c.Assert(err, IsNil) |
445 | 217 | err = com.Run(&cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard}) | 219 | err = com.Run(ctx) |
446 | 218 | c.Assert(err, IsNil) | 220 | c.Assert(err, IsNil) |
447 | 219 | p := environs.ToolsStoragePath(version.Current) | 221 | p := environs.ToolsStoragePath(version.Current) |
448 | 220 | r, err := s.Conn.Environ.Storage().Get(p) | 222 | r, err := s.Conn.Environ.Storage().Get(p) |
449 | 221 | 223 | ||
450 | === modified file 'cmd/jujuc/main_test.go' | |||
451 | --- cmd/jujuc/main_test.go 2012-08-07 16:23:28 +0000 | |||
452 | +++ cmd/jujuc/main_test.go 2012-09-18 11:54:19 +0000 | |||
453 | @@ -49,7 +49,7 @@ | |||
454 | 49 | "remote", "", "test jujuc", "here is some documentation"} | 49 | "remote", "", "test jujuc", "here is some documentation"} |
455 | 50 | } | 50 | } |
456 | 51 | 51 | ||
458 | 52 | func (c *RemoteCommand) Init(f *gnuflag.FlagSet, args []string) error { | 52 | func (c *RemoteCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
459 | 53 | f.StringVar(&c.msg, "error", "", "if set, fail") | 53 | f.StringVar(&c.msg, "error", "", "if set, fail") |
460 | 54 | if err := f.Parse(true, args); err != nil { | 54 | if err := f.Parse(true, args); err != nil { |
461 | 55 | return err | 55 | return err |
462 | 56 | 56 | ||
463 | === modified file 'cmd/jujuc/server/config-get.go' | |||
464 | --- cmd/jujuc/server/config-get.go 2012-07-31 21:36:59 +0000 | |||
465 | +++ cmd/jujuc/server/config-get.go 2012-09-18 11:54:19 +0000 | |||
466 | @@ -24,7 +24,7 @@ | |||
467 | 24 | } | 24 | } |
468 | 25 | } | 25 | } |
469 | 26 | 26 | ||
471 | 27 | func (c *ConfigGetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 27 | func (c *ConfigGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
472 | 28 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 28 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
473 | 29 | if err := f.Parse(true, args); err != nil { | 29 | if err := f.Parse(true, args); err != nil { |
474 | 30 | return err | 30 | return err |
475 | 31 | 31 | ||
476 | === modified file 'cmd/jujuc/server/config-get_test.go' | |||
477 | --- cmd/jujuc/server/config-get_test.go 2012-07-31 21:36:59 +0000 | |||
478 | +++ cmd/jujuc/server/config-get_test.go 2012-09-18 11:54:19 +0000 | |||
479 | @@ -97,6 +97,6 @@ | |||
480 | 97 | hctx := s.GetHookContext(c, -1, "") | 97 | hctx := s.GetHookContext(c, -1, "") |
481 | 98 | com, err := hctx.NewCommand("config-get") | 98 | com, err := hctx.NewCommand("config-get") |
482 | 99 | c.Assert(err, IsNil) | 99 | c.Assert(err, IsNil) |
484 | 100 | err = com.Init(dummyFlagSet(), []string{"multiple", "keys"}) | 100 | err = com.Init(dummyFlagSet(), []string{"multiple", "keys"}, nil) |
485 | 101 | c.Assert(err, ErrorMatches, `unrecognized args: \["keys"\]`) | 101 | c.Assert(err, ErrorMatches, `unrecognized args: \["keys"\]`) |
486 | 102 | } | 102 | } |
487 | 103 | 103 | ||
488 | === modified file 'cmd/jujuc/server/juju-log.go' | |||
489 | --- cmd/jujuc/server/juju-log.go 2012-08-06 16:41:17 +0000 | |||
490 | +++ cmd/jujuc/server/juju-log.go 2012-09-18 11:54:19 +0000 | |||
491 | @@ -23,7 +23,7 @@ | |||
492 | 23 | return &cmd.Info{"juju-log", "<message>", "write a message to the juju log", ""} | 23 | return &cmd.Info{"juju-log", "<message>", "write a message to the juju log", ""} |
493 | 24 | } | 24 | } |
494 | 25 | 25 | ||
496 | 26 | func (c *JujuLogCommand) Init(f *gnuflag.FlagSet, args []string) error { | 26 | func (c *JujuLogCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
497 | 27 | f.BoolVar(&c.Debug, "debug", false, "log at debug level") | 27 | f.BoolVar(&c.Debug, "debug", false, "log at debug level") |
498 | 28 | if err := f.Parse(true, args); err != nil { | 28 | if err := f.Parse(true, args); err != nil { |
499 | 29 | return err | 29 | return err |
500 | 30 | 30 | ||
501 | === modified file 'cmd/jujuc/server/juju-log_test.go' | |||
502 | --- cmd/jujuc/server/juju-log_test.go 2012-08-01 15:48:38 +0000 | |||
503 | +++ cmd/jujuc/server/juju-log_test.go 2012-09-18 11:54:19 +0000 | |||
504 | @@ -82,6 +82,6 @@ | |||
505 | 82 | ctx := &server.HookContext{} | 82 | ctx := &server.HookContext{} |
506 | 83 | com, err := ctx.NewCommand("juju-log") | 83 | com, err := ctx.NewCommand("juju-log") |
507 | 84 | c.Assert(err, IsNil) | 84 | c.Assert(err, IsNil) |
509 | 85 | err = com.Init(dummyFlagSet(), nil) | 85 | err = com.Init(dummyFlagSet(), nil, nil) |
510 | 86 | c.Assert(err, ErrorMatches, "no message specified") | 86 | c.Assert(err, ErrorMatches, "no message specified") |
511 | 87 | } | 87 | } |
512 | 88 | 88 | ||
513 | === modified file 'cmd/jujuc/server/ports.go' | |||
514 | --- cmd/jujuc/server/ports.go 2012-07-30 14:30:00 +0000 | |||
515 | +++ cmd/jujuc/server/ports.go 2012-09-18 11:54:19 +0000 | |||
516 | @@ -28,7 +28,7 @@ | |||
517 | 28 | return fmt.Errorf(`port must be in the range [1, 65535]; got "%v"`, value) | 28 | return fmt.Errorf(`port must be in the range [1, 65535]; got "%v"`, value) |
518 | 29 | } | 29 | } |
519 | 30 | 30 | ||
521 | 31 | func (c *portCommand) Init(f *gnuflag.FlagSet, args []string) error { | 31 | func (c *portCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
522 | 32 | if err := f.Parse(true, args); err != nil { | 32 | if err := f.Parse(true, args); err != nil { |
523 | 33 | return err | 33 | return err |
524 | 34 | } | 34 | } |
525 | 35 | 35 | ||
526 | === modified file 'cmd/jujuc/server/ports_test.go' | |||
527 | --- cmd/jujuc/server/ports_test.go 2012-07-30 14:30:00 +0000 | |||
528 | +++ cmd/jujuc/server/ports_test.go 2012-09-18 11:54:19 +0000 | |||
529 | @@ -58,7 +58,7 @@ | |||
530 | 58 | hctx := s.GetHookContext(c, -1, "") | 58 | hctx := s.GetHookContext(c, -1, "") |
531 | 59 | com, err := hctx.NewCommand(name) | 59 | com, err := hctx.NewCommand(name) |
532 | 60 | c.Assert(err, IsNil) | 60 | c.Assert(err, IsNil) |
534 | 61 | err = com.Init(dummyFlagSet(), t.args) | 61 | err = com.Init(dummyFlagSet(), t.args, nil) |
535 | 62 | c.Assert(err, ErrorMatches, t.err) | 62 | c.Assert(err, ErrorMatches, t.err) |
536 | 63 | } | 63 | } |
537 | 64 | } | 64 | } |
538 | 65 | 65 | ||
539 | === modified file 'cmd/jujuc/server/relation-get.go' | |||
540 | --- cmd/jujuc/server/relation-get.go 2012-08-07 14:22:28 +0000 | |||
541 | +++ cmd/jujuc/server/relation-get.go 2012-09-18 11:54:19 +0000 | |||
542 | @@ -34,7 +34,7 @@ | |||
543 | 34 | } | 34 | } |
544 | 35 | } | 35 | } |
545 | 36 | 36 | ||
547 | 37 | func (c *RelationGetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 37 | func (c *RelationGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
548 | 38 | // TODO FWER implement --format shell lp:1033511 | 38 | // TODO FWER implement --format shell lp:1033511 |
549 | 39 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 39 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
550 | 40 | f.Var(c.relationIdValue(&c.RelationId), "r", "specify a relation by id") | 40 | f.Var(c.relationIdValue(&c.RelationId), "r", "specify a relation by id") |
551 | 41 | 41 | ||
552 | === modified file 'cmd/jujuc/server/relation-ids.go' | |||
553 | --- cmd/jujuc/server/relation-ids.go 2012-08-07 12:41:54 +0000 | |||
554 | +++ cmd/jujuc/server/relation-ids.go 2012-09-18 11:54:19 +0000 | |||
555 | @@ -30,7 +30,7 @@ | |||
556 | 30 | } | 30 | } |
557 | 31 | } | 31 | } |
558 | 32 | 32 | ||
560 | 33 | func (c *RelationIdsCommand) Init(f *gnuflag.FlagSet, args []string) error { | 33 | func (c *RelationIdsCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
561 | 34 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 34 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
562 | 35 | if err := f.Parse(true, args); err != nil { | 35 | if err := f.Parse(true, args); err != nil { |
563 | 36 | return err | 36 | return err |
564 | 37 | 37 | ||
565 | === modified file 'cmd/jujuc/server/relation-list.go' | |||
566 | --- cmd/jujuc/server/relation-list.go 2012-08-07 14:22:28 +0000 | |||
567 | +++ cmd/jujuc/server/relation-list.go 2012-09-18 11:54:19 +0000 | |||
568 | @@ -29,7 +29,7 @@ | |||
569 | 29 | } | 29 | } |
570 | 30 | } | 30 | } |
571 | 31 | 31 | ||
573 | 32 | func (c *RelationListCommand) Init(f *gnuflag.FlagSet, args []string) (err error) { | 32 | func (c *RelationListCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) (err error) { |
574 | 33 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 33 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
575 | 34 | if err := f.Parse(true, args); err != nil { | 34 | if err := f.Parse(true, args); err != nil { |
576 | 35 | return err | 35 | return err |
577 | 36 | 36 | ||
578 | === modified file 'cmd/jujuc/server/relation-set.go' | |||
579 | --- cmd/jujuc/server/relation-set.go 2012-08-07 14:22:28 +0000 | |||
580 | +++ cmd/jujuc/server/relation-set.go 2012-09-18 11:54:19 +0000 | |||
581 | @@ -24,7 +24,7 @@ | |||
582 | 24 | } | 24 | } |
583 | 25 | } | 25 | } |
584 | 26 | 26 | ||
586 | 27 | func (c *RelationSetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 27 | func (c *RelationSetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
587 | 28 | f.Var(c.relationIdValue(&c.RelationId), "r", "specify a relation by id") | 28 | f.Var(c.relationIdValue(&c.RelationId), "r", "specify a relation by id") |
588 | 29 | if err := f.Parse(true, args); err != nil { | 29 | if err := f.Parse(true, args); err != nil { |
589 | 30 | return err | 30 | return err |
590 | 31 | 31 | ||
591 | === modified file 'cmd/jujuc/server/relation-set_test.go' | |||
592 | --- cmd/jujuc/server/relation-set_test.go 2012-08-07 14:22:28 +0000 | |||
593 | +++ cmd/jujuc/server/relation-set_test.go 2012-09-18 11:54:19 +0000 | |||
594 | @@ -152,7 +152,7 @@ | |||
595 | 152 | hctx := s.GetHookContext(c, t.ctxrelid, "") | 152 | hctx := s.GetHookContext(c, t.ctxrelid, "") |
596 | 153 | com, err := hctx.NewCommand("relation-set") | 153 | com, err := hctx.NewCommand("relation-set") |
597 | 154 | c.Assert(err, IsNil) | 154 | c.Assert(err, IsNil) |
599 | 155 | err = com.Init(dummyFlagSet(), t.args) | 155 | err = com.Init(dummyFlagSet(), t.args, nil) |
600 | 156 | if t.err == "" { | 156 | if t.err == "" { |
601 | 157 | c.Assert(err, IsNil) | 157 | c.Assert(err, IsNil) |
602 | 158 | rset := com.(*server.RelationSetCommand) | 158 | rset := com.(*server.RelationSetCommand) |
603 | 159 | 159 | ||
604 | === modified file 'cmd/jujuc/server/server_test.go' | |||
605 | --- cmd/jujuc/server/server_test.go 2012-08-18 09:09:37 +0000 | |||
606 | +++ cmd/jujuc/server/server_test.go 2012-09-18 11:54:19 +0000 | |||
607 | @@ -24,7 +24,7 @@ | |||
608 | 24 | return &cmd.Info{"remote", "", "act at a distance", "blah doc"} | 24 | return &cmd.Info{"remote", "", "act at a distance", "blah doc"} |
609 | 25 | } | 25 | } |
610 | 26 | 26 | ||
612 | 27 | func (c *RpcCommand) Init(f *gnuflag.FlagSet, args []string) error { | 27 | func (c *RpcCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
613 | 28 | f.StringVar(&c.Value, "value", "", "doc") | 28 | f.StringVar(&c.Value, "value", "", "doc") |
614 | 29 | f.BoolVar(&c.Slow, "slow", false, "doc") | 29 | f.BoolVar(&c.Slow, "slow", false, "doc") |
615 | 30 | if err := f.Parse(true, args); err != nil { | 30 | if err := f.Parse(true, args); err != nil { |
616 | 31 | 31 | ||
617 | === modified file 'cmd/jujuc/server/unit-get.go' | |||
618 | --- cmd/jujuc/server/unit-get.go 2012-07-31 21:36:59 +0000 | |||
619 | +++ cmd/jujuc/server/unit-get.go 2012-09-18 11:54:19 +0000 | |||
620 | @@ -24,7 +24,7 @@ | |||
621 | 24 | } | 24 | } |
622 | 25 | } | 25 | } |
623 | 26 | 26 | ||
625 | 27 | func (c *UnitGetCommand) Init(f *gnuflag.FlagSet, args []string) error { | 27 | func (c *UnitGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
626 | 28 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 28 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
627 | 29 | if err := f.Parse(true, args); err != nil { | 29 | if err := f.Parse(true, args); err != nil { |
628 | 30 | return err | 30 | return err |
629 | 31 | 31 | ||
630 | === modified file 'cmd/jujuc/server/unit-get_test.go' | |||
631 | --- cmd/jujuc/server/unit-get_test.go 2012-07-31 21:36:59 +0000 | |||
632 | +++ cmd/jujuc/server/unit-get_test.go 2012-09-18 11:54:19 +0000 | |||
633 | @@ -83,7 +83,7 @@ | |||
634 | 83 | hctx := s.GetHookContext(c, -1, "") | 83 | hctx := s.GetHookContext(c, -1, "") |
635 | 84 | com, err := hctx.NewCommand("unit-get") | 84 | com, err := hctx.NewCommand("unit-get") |
636 | 85 | c.Assert(err, IsNil) | 85 | c.Assert(err, IsNil) |
638 | 86 | err = com.Init(dummyFlagSet(), []string{"protected-address"}) | 86 | err = com.Init(dummyFlagSet(), []string{"protected-address"}, nil) |
639 | 87 | c.Assert(err, ErrorMatches, `unknown setting "protected-address"`) | 87 | c.Assert(err, ErrorMatches, `unknown setting "protected-address"`) |
640 | 88 | } | 88 | } |
641 | 89 | 89 | ||
642 | @@ -91,6 +91,6 @@ | |||
643 | 91 | hctx := s.GetHookContext(c, -1, "") | 91 | hctx := s.GetHookContext(c, -1, "") |
644 | 92 | com, err := hctx.NewCommand("unit-get") | 92 | com, err := hctx.NewCommand("unit-get") |
645 | 93 | c.Assert(err, IsNil) | 93 | c.Assert(err, IsNil) |
647 | 94 | err = com.Init(dummyFlagSet(), []string{"private-address", "blah"}) | 94 | err = com.Init(dummyFlagSet(), []string{"private-address", "blah"}, nil) |
648 | 95 | c.Assert(err, ErrorMatches, `unrecognized args: \["blah"\]`) | 95 | c.Assert(err, ErrorMatches, `unrecognized args: \["blah"\]`) |
649 | 96 | } | 96 | } |
650 | 97 | 97 | ||
651 | === modified file 'cmd/jujud/bootstrap.go' | |||
652 | --- cmd/jujud/bootstrap.go 2012-09-09 20:10:46 +0000 | |||
653 | +++ cmd/jujud/bootstrap.go 2012-09-18 11:54:19 +0000 | |||
654 | @@ -21,7 +21,7 @@ | |||
655 | 21 | } | 21 | } |
656 | 22 | 22 | ||
657 | 23 | // Init initializes the command for running. | 23 | // Init initializes the command for running. |
659 | 24 | func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string) error { | 24 | func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
660 | 25 | stateInfoVar(f, &c.StateInfo, "zookeeper-servers", []string{"127.0.0.1:2181"}, "address of zookeeper to initialize") | 25 | stateInfoVar(f, &c.StateInfo, "zookeeper-servers", []string{"127.0.0.1:2181"}, "address of zookeeper to initialize") |
661 | 26 | f.StringVar(&c.InstanceId, "instance-id", "", "instance id of this machine") | 26 | f.StringVar(&c.InstanceId, "instance-id", "", "instance id of this machine") |
662 | 27 | yamlBase64Var(f, &c.EnvConfig, "env-config", "", "initial environment configuration (yaml, base64 encoded)") | 27 | yamlBase64Var(f, &c.EnvConfig, "env-config", "", "initial environment configuration (yaml, base64 encoded)") |
663 | 28 | 28 | ||
664 | === modified file 'cmd/jujud/machine.go' | |||
665 | --- cmd/jujud/machine.go 2012-09-12 15:35:55 +0000 | |||
666 | +++ cmd/jujud/machine.go 2012-09-18 11:54:19 +0000 | |||
667 | @@ -25,7 +25,7 @@ | |||
668 | 25 | } | 25 | } |
669 | 26 | 26 | ||
670 | 27 | // Init initializes the command for running. | 27 | // Init initializes the command for running. |
672 | 28 | func (a *MachineAgent) Init(f *gnuflag.FlagSet, args []string) error { | 28 | func (a *MachineAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
673 | 29 | a.Conf.addFlags(f) | 29 | a.Conf.addFlags(f) |
674 | 30 | f.IntVar(&a.MachineId, "machine-id", -1, "id of the machine to run") | 30 | f.IntVar(&a.MachineId, "machine-id", -1, "id of the machine to run") |
675 | 31 | if err := f.Parse(true, args); err != nil { | 31 | if err := f.Parse(true, args); err != nil { |
676 | 32 | 32 | ||
677 | === modified file 'cmd/jujud/provisioning.go' | |||
678 | --- cmd/jujud/provisioning.go 2012-08-27 23:27:57 +0000 | |||
679 | +++ cmd/jujud/provisioning.go 2012-09-18 11:54:19 +0000 | |||
680 | @@ -31,7 +31,7 @@ | |||
681 | 31 | } | 31 | } |
682 | 32 | 32 | ||
683 | 33 | // Init initializes the command for running. | 33 | // Init initializes the command for running. |
685 | 34 | func (a *ProvisioningAgent) Init(f *gnuflag.FlagSet, args []string) error { | 34 | func (a *ProvisioningAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
686 | 35 | a.Conf.addFlags(f) | 35 | a.Conf.addFlags(f) |
687 | 36 | if err := f.Parse(true, args); err != nil { | 36 | if err := f.Parse(true, args); err != nil { |
688 | 37 | return err | 37 | return err |
689 | 38 | 38 | ||
690 | === modified file 'cmd/jujud/unit.go' | |||
691 | --- cmd/jujud/unit.go 2012-09-12 17:26:56 +0000 | |||
692 | +++ cmd/jujud/unit.go 2012-09-18 11:54:19 +0000 | |||
693 | @@ -25,7 +25,7 @@ | |||
694 | 25 | } | 25 | } |
695 | 26 | 26 | ||
696 | 27 | // Init initializes the command for running. | 27 | // Init initializes the command for running. |
698 | 28 | func (a *UnitAgent) Init(f *gnuflag.FlagSet, args []string) error { | 28 | func (a *UnitAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
699 | 29 | a.Conf.addFlags(f) | 29 | a.Conf.addFlags(f) |
700 | 30 | f.StringVar(&a.UnitName, "unit-name", "", "name of the unit to run") | 30 | f.StringVar(&a.UnitName, "unit-name", "", "name of the unit to run") |
701 | 31 | if err := f.Parse(true, args); err != nil { | 31 | if err := f.Parse(true, args); err != nil { |
702 | 32 | 32 | ||
703 | === modified file 'cmd/jujud/util_test.go' | |||
704 | --- cmd/jujud/util_test.go 2012-09-12 17:10:28 +0000 | |||
705 | +++ cmd/jujud/util_test.go 2012-09-18 11:54:19 +0000 | |||
706 | @@ -12,7 +12,7 @@ | |||
707 | 12 | func initCmd(c cmd.Command, args []string) error { | 12 | func initCmd(c cmd.Command, args []string) error { |
708 | 13 | f := gnuflag.NewFlagSet("", gnuflag.ContinueOnError) | 13 | f := gnuflag.NewFlagSet("", gnuflag.ContinueOnError) |
709 | 14 | f.SetOutput(ioutil.Discard) | 14 | f.SetOutput(ioutil.Discard) |
711 | 15 | return c.Init(f, args) | 15 | return c.Init(f, args, nil) |
712 | 16 | } | 16 | } |
713 | 17 | 17 | ||
714 | 18 | // CheckAgentCommand is a utility function for verifying that common agent | 18 | // CheckAgentCommand is a utility function for verifying that common agent |
715 | 19 | 19 | ||
716 | === modified file 'cmd/jujud/version.go' | |||
717 | --- cmd/jujud/version.go 2012-08-16 17:09:22 +0000 | |||
718 | +++ cmd/jujud/version.go 2012-09-18 11:54:19 +0000 | |||
719 | @@ -15,7 +15,7 @@ | |||
720 | 15 | return &cmd.Info{"version", "", "print the current version", ""} | 15 | return &cmd.Info{"version", "", "print the current version", ""} |
721 | 16 | } | 16 | } |
722 | 17 | 17 | ||
724 | 18 | func (v *VersionCommand) Init(f *gnuflag.FlagSet, args []string) error { | 18 | func (v *VersionCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
725 | 19 | v.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 19 | v.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
726 | 20 | if err := f.Parse(true, args); err != nil { | 20 | if err := f.Parse(true, args); err != nil { |
727 | 21 | return err | 21 | return err |
728 | 22 | 22 | ||
729 | === modified file 'cmd/output_test.go' | |||
730 | --- cmd/output_test.go 2012-08-07 16:23:28 +0000 | |||
731 | +++ cmd/output_test.go 2012-09-18 11:54:19 +0000 | |||
732 | @@ -16,7 +16,7 @@ | |||
733 | 16 | return &cmd.Info{"output", "<something>", "I like to output", "output"} | 16 | return &cmd.Info{"output", "<something>", "I like to output", "output"} |
734 | 17 | } | 17 | } |
735 | 18 | 18 | ||
737 | 19 | func (c *OutputCommand) Init(f *gnuflag.FlagSet, args []string) error { | 19 | func (c *OutputCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
738 | 20 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) | 20 | c.out.AddFlags(f, "smart", cmd.DefaultFormatters) |
739 | 21 | if err := f.Parse(true, args); err != nil { | 21 | if err := f.Parse(true, args); err != nil { |
740 | 22 | return err | 22 | return err |
741 | 23 | 23 | ||
742 | === modified file 'cmd/supercommand.go' | |||
743 | --- cmd/supercommand.go 2012-05-18 09:52:31 +0000 | |||
744 | +++ cmd/supercommand.go 2012-09-18 11:54:19 +0000 | |||
745 | @@ -75,7 +75,7 @@ | |||
746 | 75 | } | 75 | } |
747 | 76 | 76 | ||
748 | 77 | // Init initializes the command for running. | 77 | // Init initializes the command for running. |
750 | 78 | func (c *SuperCommand) Init(f *gnuflag.FlagSet, args []string) error { | 78 | func (c *SuperCommand) Init(f *gnuflag.FlagSet, args []string, ctx *Context) error { |
751 | 79 | if c.Log != nil { | 79 | if c.Log != nil { |
752 | 80 | c.Log.AddFlags(f) | 80 | c.Log.AddFlags(f) |
753 | 81 | } | 81 | } |
754 | @@ -90,7 +90,7 @@ | |||
755 | 90 | if c.subcmd, found = c.subcmds[subargs[0]]; !found { | 90 | if c.subcmd, found = c.subcmds[subargs[0]]; !found { |
756 | 91 | return fmt.Errorf("unrecognized command: %s %s", c.Info().Name, subargs[0]) | 91 | return fmt.Errorf("unrecognized command: %s %s", c.Info().Name, subargs[0]) |
757 | 92 | } | 92 | } |
759 | 93 | return c.subcmd.Init(f, subargs[1:]) | 93 | return c.subcmd.Init(f, subargs[1:], ctx) |
760 | 94 | } | 94 | } |
761 | 95 | 95 | ||
762 | 96 | // Run executes the subcommand that was selected in Init. | 96 | // Run executes the subcommand that was selected in Init. |
763 | 97 | 97 | ||
764 | === modified file 'cmd/supercommand_test.go' | |||
765 | --- cmd/supercommand_test.go 2012-06-21 20:40:39 +0000 | |||
766 | +++ cmd/supercommand_test.go 2012-09-18 11:54:19 +0000 | |||
767 | @@ -10,7 +10,7 @@ | |||
768 | 10 | jc := &cmd.SuperCommand{Name: "jujutest"} | 10 | jc := &cmd.SuperCommand{Name: "jujutest"} |
769 | 11 | tc := &TestCommand{Name: "defenestrate"} | 11 | tc := &TestCommand{Name: "defenestrate"} |
770 | 12 | jc.Register(tc) | 12 | jc.Register(tc) |
772 | 13 | return jc, tc, jc.Init(dummyFlagSet(), args) | 13 | return jc, tc, jc.Init(dummyFlagSet(), args, nil) |
773 | 14 | } | 14 | } |
774 | 15 | 15 | ||
775 | 16 | type SuperCommandSuite struct{} | 16 | type SuperCommandSuite struct{} |
776 | @@ -19,7 +19,7 @@ | |||
777 | 19 | 19 | ||
778 | 20 | func (s *SuperCommandSuite) TestDispatch(c *C) { | 20 | func (s *SuperCommandSuite) TestDispatch(c *C) { |
779 | 21 | jc := &cmd.SuperCommand{Name: "jujutest"} | 21 | jc := &cmd.SuperCommand{Name: "jujutest"} |
781 | 22 | err := jc.Init(dummyFlagSet(), []string{}) | 22 | err := jc.Init(dummyFlagSet(), []string{}, nil) |
782 | 23 | c.Assert(err, ErrorMatches, `no command specified`) | 23 | c.Assert(err, ErrorMatches, `no command specified`) |
783 | 24 | info := jc.Info() | 24 | info := jc.Info() |
784 | 25 | c.Assert(info.Name, Equals, "jujutest") | 25 | c.Assert(info.Name, Equals, "jujutest") |
785 | 26 | 26 | ||
786 | === modified file 'cmd/util_test.go' | |||
787 | --- cmd/util_test.go 2012-09-10 03:51:34 +0000 | |||
788 | +++ cmd/util_test.go 2012-09-18 11:54:19 +0000 | |||
789 | @@ -36,7 +36,7 @@ | |||
790 | 36 | return &cmd.Info{c.Name, "<something>", c.Name + " the juju", c.Name + "-doc"} | 36 | return &cmd.Info{c.Name, "<something>", c.Name + " the juju", c.Name + "-doc"} |
791 | 37 | } | 37 | } |
792 | 38 | 38 | ||
794 | 39 | func (c *TestCommand) Init(f *gnuflag.FlagSet, args []string) error { | 39 | func (c *TestCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error { |
795 | 40 | if !c.Minimal { | 40 | if !c.Minimal { |
796 | 41 | f.StringVar(&c.Option, "option", "", "option-doc") | 41 | f.StringVar(&c.Option, "option", "", "option-doc") |
797 | 42 | } | 42 | } |
If I were implementing it I think I would have gone for something more
like c.Config.Open(ctx) inside Run, but I can't come up with a really
convincing case for that being *better*. (OK, it'd be less work, but the
work's already done.) So: LGTM.
https:/ /codereview. appspot. com/6532045/