Merge lp:~dave-cheney/juju-core/102-cmd-init-context into lp:~juju/juju-core/trunk

Proposed by Dave Cheney
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
Reviewer Review Type Date Requested Status
The Go Language Gophers Pending
Review via email: mp+124899@code.launchpad.net

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.

https://codereview.appspot.com/6532045/

To post a comment you must log in.
Revision history for this message
William Reade (fwereade) wrote :

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/

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

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'cmd/cmd.go'
--- cmd/cmd.go 2012-09-10 03:51:34 +0000
+++ cmd/cmd.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
2424
25 // Init initializes the Command before running. The command may add options25 // Init initializes the Command before running. The command may add options
26 // to f before processing args.26 // to f before processing args.
27 Init(f *gnuflag.FlagSet, args []string) error27 Init(f *gnuflag.FlagSet, args []string, ctx *Context) error
2828
29 // Run will execute the Command as directed by the options and positional29 // Run will execute the Command as directed by the options and positional
30 // arguments passed to Init.30 // arguments passed to Init.
@@ -100,7 +100,7 @@
100func Main(c Command, ctx *Context, args []string) int {100func Main(c Command, ctx *Context, args []string) int {
101 f := gnuflag.NewFlagSet(c.Info().Name, gnuflag.ContinueOnError)101 f := gnuflag.NewFlagSet(c.Info().Name, gnuflag.ContinueOnError)
102 f.SetOutput(ioutil.Discard)102 f.SetOutput(ioutil.Discard)
103 if err := c.Init(f, args); err != nil {103 if err := c.Init(f, args, ctx); err != nil {
104 if err == gnuflag.ErrHelp {104 if err == gnuflag.ErrHelp {
105 ctx.Stderr.Write(c.Info().Help(f))105 ctx.Stderr.Write(c.Info().Help(f))
106 return 0106 return 0
107107
=== modified file 'cmd/filevar.go'
--- cmd/filevar.go 2012-09-17 14:05:50 +0000
+++ cmd/filevar.go 2012-09-18 11:54:19 +0000
@@ -3,19 +3,22 @@
3import (3import (
4 "io"4 "io"
5 "os"5 "os"
6
7 "launchpad.net/gnuflag"
6)8)
79
8// FileVar represents a path to a file. If the flag is 10// FileVar represents a path to a file. If the flag is
9// valid FileVar.ReadCloser will be non nil and FileVar11// valid FileVar.ReadCloser will be non nil and FileVar
10// will be usable as an io.ReadCloser.12// will be usable as an io.ReadCloser.
11type FileVar struct {13type FileVar struct {
14 ctx *Context
12 io.ReadCloser15 io.ReadCloser
13 Path string16 Path string
14}17}
1518
16// Set opens the file. 19// Set opens the file, resolving the path relative to Context.Dir
17func (f *FileVar) Set(v string) error {20func (f *FileVar) Set(v string) error {
18 file, err := os.Open(v)21 file, err := os.Open(f.ctx.AbsPath(v))
19 if err != nil {22 if err != nil {
20 return err23 return err
21 }24 }
@@ -28,3 +31,9 @@
28func (f *FileVar) String() string {31func (f *FileVar) String() string {
29 return f.Path32 return f.Path
30}33}
34
35// AddFlags injects the command line flags into f.
36func (f *FileVar) AddFlags(fs *gnuflag.FlagSet, name, desc string, ctx *Context) {
37 f.ctx = ctx
38 fs.Var(f, name, desc)
39}
3140
=== modified file 'cmd/juju/addunit.go'
--- cmd/juju/addunit.go 2012-09-03 17:35:44 +0000
+++ cmd/juju/addunit.go 2012-09-18 11:54:19 +0000
@@ -19,7 +19,7 @@
19 return &cmd.Info{"add-unit", "", "add a service unit", ""}19 return &cmd.Info{"add-unit", "", "add a service unit", ""}
20}20}
2121
22func (c *AddUnitCommand) Init(f *gnuflag.FlagSet, args []string) error {22func (c *AddUnitCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
23 addEnvironFlags(&c.EnvName, f)23 addEnvironFlags(&c.EnvName, f)
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")
25 f.IntVar(&c.NumUnits, "num-units", 1, "")25 f.IntVar(&c.NumUnits, "num-units", 1, "")
2626
=== modified file 'cmd/juju/addunit_test.go'
--- cmd/juju/addunit_test.go 2012-09-12 22:31:00 +0000
+++ cmd/juju/addunit_test.go 2012-09-18 11:54:19 +0000
@@ -16,9 +16,10 @@
1616
17func runAddUnit(c *C, args ...string) error {17func runAddUnit(c *C, args ...string) error {
18 com := &AddUnitCommand{}18 com := &AddUnitCommand{}
19 err := com.Init(newFlagSet(), args)19 ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}
20 err := com.Init(newFlagSet(), args, ctx)
20 c.Assert(err, IsNil)21 c.Assert(err, IsNil)
21 return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}})22 return com.Run(ctx)
22}23}
2324
24func (s *AddUnitSuite) TestAddUnit(c *C) {25func (s *AddUnitSuite) TestAddUnit(c *C) {
2526
=== modified file 'cmd/juju/bootstrap.go'
--- cmd/juju/bootstrap.go 2012-09-03 14:07:19 +0000
+++ cmd/juju/bootstrap.go 2012-09-18 11:54:19 +0000
@@ -17,7 +17,7 @@
17 return &cmd.Info{"bootstrap", "", "start up an environment from scratch", ""}17 return &cmd.Info{"bootstrap", "", "start up an environment from scratch", ""}
18}18}
1919
20func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string) error {20func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
21 addEnvironFlags(&c.EnvName, f)21 addEnvironFlags(&c.EnvName, f)
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")
23 if err := f.Parse(true, args); err != nil {23 if err := f.Parse(true, args); err != nil {
2424
=== modified file 'cmd/juju/cmd_test.go'
--- cmd/juju/cmd_test.go 2012-09-17 15:30:34 +0000
+++ cmd/juju/cmd_test.go 2012-09-18 11:54:19 +0000
@@ -1,9 +1,9 @@
1package main1package main
22
3import (3import (
4 "bytes"
4 "net/http"5 "net/http"
5 "os"6 "os"
6 "path/filepath"
7 "reflect"7 "reflect"
88
9 "launchpad.net/gnuflag"9 "launchpad.net/gnuflag"
@@ -52,7 +52,7 @@
52// testInit checks that a command initialises correctly52// testInit checks that a command initialises correctly
53// with the given set of arguments.53// with the given set of arguments.
54func testInit(c *C, com cmd.Command, args []string, errPat string) {54func testInit(c *C, com cmd.Command, args []string, errPat string) {
55 err := com.Init(newFlagSet(), args)55 err := com.Init(newFlagSet(), args, nil)
56 if errPat != "" {56 if errPat != "" {
57 c.Assert(err, ErrorMatches, errPat)57 c.Assert(err, ErrorMatches, errPat)
58 } else {58 } else {
@@ -113,14 +113,15 @@
113 go func() {113 go func() {
114 // signal that we're done with this ops channel.114 // signal that we're done with this ops channel.
115 defer dummy.Listen(nil)115 defer dummy.Listen(nil)
116 ctx := cmd.DefaultContext()
116117
117 err := com.Init(newFlagSet(), args)118 err := com.Init(newFlagSet(), args, ctx)
118 if err != nil {119 if err != nil {
119 errc <- err120 errc <- err
120 return121 return
121 }122 }
122123
123 err = com.Run(cmd.DefaultContext())124 err = com.Run(ctx)
124 errc <- err125 errc <- err
125 }()126 }()
126 return127 return
@@ -213,9 +214,9 @@
213 }214 }
214}215}
215216
216func initDeployCommand(args ...string) (*DeployCommand, error) {217func initDeployCommand(ctx *cmd.Context, args ...string) (*DeployCommand, error) {
217 com := &DeployCommand{}218 com := &DeployCommand{}
218 return com, com.Init(newFlagSet(), args)219 return com, com.Init(newFlagSet(), args, ctx)
219}220}
220221
221func (*CmdSuite) TestDeployCommandInit(c *C) {222func (*CmdSuite) TestDeployCommandInit(c *C) {
@@ -224,31 +225,31 @@
224225
225 for _, t := range deployTests {226 for _, t := range deployTests {
226 initExpectations(t.com)227 initExpectations(t.com)
227 com, err := initDeployCommand(t.args...)228 com, err := initDeployCommand(nil, t.args...)
228 c.Assert(err, IsNil)229 c.Assert(err, IsNil)
229 c.Assert(com, DeepEquals, t.com)230 c.Assert(com, DeepEquals, t.com)
230 }231 }
231232
232 // test --config path233 // test --config path
233 dir := c.MkDir()234 ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}
234 path := filepath.Join(dir, "testconfig.yaml")235 path := ctx.AbsPath("testconfig.yaml")
235 file, err := os.Create(path)236 file, err := os.Create(path)
236 c.Assert(err, IsNil)237 c.Assert(err, IsNil)
237 file.Close()238 file.Close()
238 com, err := initDeployCommand("--config", path, "charm-name")239 com, err := initDeployCommand(ctx, "--config", path, "charm-name")
239 c.Assert(err, IsNil)240 c.Assert(err, IsNil)
240 defer com.Config.Close()241 defer com.Config.Close()
241 c.Assert(com.Config.Path, Equals, path)242 c.Assert(com.Config.Path, Equals, path)
242 c.Assert(com.Config.ReadCloser, NotNil)243 c.Assert(com.Config.ReadCloser, NotNil)
243244
244 // missing args245 // missing args
245 _, err = initDeployCommand()246 _, err = initDeployCommand(ctx)
246 c.Assert(err, ErrorMatches, "no charm specified")247 c.Assert(err, ErrorMatches, "no charm specified")
247248
248 // bad unit count249 // bad unit count
249 _, err = initDeployCommand("charm-name", "--num-units", "0")250 _, err = initDeployCommand(ctx, "charm-name", "--num-units", "0")
250 c.Assert(err, ErrorMatches, "must deploy at least one unit")251 c.Assert(err, ErrorMatches, "must deploy at least one unit")
251 _, err = initDeployCommand("charm-name", "-n", "0")252 _, err = initDeployCommand(ctx, "charm-name", "-n", "0")
252 c.Assert(err, ErrorMatches, "must deploy at least one unit")253 c.Assert(err, ErrorMatches, "must deploy at least one unit")
253254
254 // environment tested elsewhere255 // environment tested elsewhere
@@ -256,7 +257,7 @@
256257
257func initAddUnitCommand(args ...string) (*AddUnitCommand, error) {258func initAddUnitCommand(args ...string) (*AddUnitCommand, error) {
258 com := &AddUnitCommand{}259 com := &AddUnitCommand{}
259 return com, com.Init(newFlagSet(), args)260 return com, com.Init(newFlagSet(), args, nil)
260}261}
261262
262func (*CmdSuite) TestAddUnitCommandInit(c *C) {263func (*CmdSuite) TestAddUnitCommandInit(c *C) {
@@ -275,7 +276,7 @@
275276
276func initExposeCommand(args ...string) (*ExposeCommand, error) {277func initExposeCommand(args ...string) (*ExposeCommand, error) {
277 com := &ExposeCommand{}278 com := &ExposeCommand{}
278 return com, com.Init(newFlagSet(), args)279 return com, com.Init(newFlagSet(), args, nil)
279}280}
280281
281func (*CmdSuite) TestExposeCommandInit(c *C) {282func (*CmdSuite) TestExposeCommandInit(c *C) {
@@ -288,7 +289,7 @@
288289
289func initUnexposeCommand(args ...string) (*UnexposeCommand, error) {290func initUnexposeCommand(args ...string) (*UnexposeCommand, error) {
290 com := &UnexposeCommand{}291 com := &UnexposeCommand{}
291 return com, com.Init(newFlagSet(), args)292 return com, com.Init(newFlagSet(), args, nil)
292}293}
293294
294func (*CmdSuite) TestUnexposeCommandInit(c *C) {295func (*CmdSuite) TestUnexposeCommandInit(c *C) {
@@ -301,7 +302,7 @@
301302
302func initGetCommand(args ...string) (*GetCommand, error) {303func initGetCommand(args ...string) (*GetCommand, error) {
303 com := &GetCommand{}304 com := &GetCommand{}
304 return com, com.Init(newFlagSet(), args)305 return com, com.Init(newFlagSet(), args, nil)
305}306}
306307
307func (*CmdSuite) TestGetCommandInit(c *C) {308func (*CmdSuite) TestGetCommandInit(c *C) {
@@ -312,7 +313,7 @@
312313
313func initSetCommand(args ...string) (*SetCommand, error) {314func initSetCommand(args ...string) (*SetCommand, error) {
314 com := &SetCommand{}315 com := &SetCommand{}
315 return com, com.Init(newFlagSet(), args)316 return com, com.Init(newFlagSet(), args, nil)
316}317}
317318
318func (*CmdSuite) TestSetCommandInit(c *C) {319func (*CmdSuite) TestSetCommandInit(c *C) {
319320
=== modified file 'cmd/juju/deploy.go'
--- cmd/juju/deploy.go 2012-09-17 14:05:50 +0000
+++ cmd/juju/deploy.go 2012-09-18 11:54:19 +0000
@@ -46,13 +46,13 @@
46 }46 }
47}47}
4848
49func (c *DeployCommand) Init(f *gnuflag.FlagSet, args []string) error {49func (c *DeployCommand) Init(f *gnuflag.FlagSet, args []string, ctx *cmd.Context) error {
50 addEnvironFlags(&c.EnvName, f)50 addEnvironFlags(&c.EnvName, f)
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")
52 f.IntVar(&c.NumUnits, "num-units", 1, "")52 f.IntVar(&c.NumUnits, "num-units", 1, "")
53 f.BoolVar(&c.BumpRevision, "u", false, "increment local charm directory revision")53 f.BoolVar(&c.BumpRevision, "u", false, "increment local charm directory revision")
54 f.BoolVar(&c.BumpRevision, "upgrade", false, "")54 f.BoolVar(&c.BumpRevision, "upgrade", false, "")
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)
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")
57 // TODO --constraints57 // TODO --constraints
58 if err := f.Parse(true, args); err != nil {58 if err := f.Parse(true, args); err != nil {
5959
=== modified file 'cmd/juju/deploy_test.go'
--- cmd/juju/deploy_test.go 2012-09-12 22:31:00 +0000
+++ cmd/juju/deploy_test.go 2012-09-18 11:54:19 +0000
@@ -111,9 +111,10 @@
111111
112func runDeploy(c *C, args ...string) error {112func runDeploy(c *C, args ...string) error {
113 com := &DeployCommand{}113 com := &DeployCommand{}
114 err := com.Init(newFlagSet(), args)114 ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}
115 err := com.Init(newFlagSet(), args, ctx)
115 c.Assert(err, IsNil)116 c.Assert(err, IsNil)
116 return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}})117 return com.Run(ctx)
117}118}
118119
119func (s *DeploySuite) TestCharmDir(c *C) {120func (s *DeploySuite) TestCharmDir(c *C) {
120121
=== modified file 'cmd/juju/destroyenvironment.go'
--- cmd/juju/destroyenvironment.go 2012-09-06 10:44:58 +0000
+++ cmd/juju/destroyenvironment.go 2012-09-18 11:54:19 +0000
@@ -19,7 +19,7 @@
19 }19 }
20}20}
2121
22func (c *DestroyEnvironmentCommand) Init(f *gnuflag.FlagSet, args []string) error {22func (c *DestroyEnvironmentCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
23 addEnvironFlags(&c.EnvName, f)23 addEnvironFlags(&c.EnvName, f)
24 if err := f.Parse(true, args); err != nil {24 if err := f.Parse(true, args); err != nil {
25 return err25 return err
2626
=== modified file 'cmd/juju/expose.go'
--- cmd/juju/expose.go 2012-09-03 17:35:44 +0000
+++ cmd/juju/expose.go 2012-09-18 11:54:19 +0000
@@ -18,7 +18,7 @@
18 return &cmd.Info{"expose", "", "expose a service", ""}18 return &cmd.Info{"expose", "", "expose a service", ""}
19}19}
2020
21func (c *ExposeCommand) Init(f *gnuflag.FlagSet, args []string) error {21func (c *ExposeCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
22 addEnvironFlags(&c.EnvName, f)22 addEnvironFlags(&c.EnvName, f)
23 if err := f.Parse(true, args); err != nil {23 if err := f.Parse(true, args); err != nil {
24 return err24 return err
2525
=== modified file 'cmd/juju/expose_test.go'
--- cmd/juju/expose_test.go 2012-09-12 22:31:00 +0000
+++ cmd/juju/expose_test.go 2012-09-18 11:54:19 +0000
@@ -16,9 +16,10 @@
1616
17func runExpose(c *C, args ...string) error {17func runExpose(c *C, args ...string) error {
18 com := &ExposeCommand{}18 com := &ExposeCommand{}
19 err := com.Init(newFlagSet(), args)19 ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}
20 err := com.Init(newFlagSet(), args, ctx)
20 c.Assert(err, IsNil)21 c.Assert(err, IsNil)
21 return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}})22 return com.Run(ctx)
22}23}
2324
24func (s *ExposeSuite) assertExposed(c *C, service string) {25func (s *ExposeSuite) assertExposed(c *C, service string) {
2526
=== modified file 'cmd/juju/get.go'
--- cmd/juju/get.go 2012-09-14 05:28:04 +0000
+++ cmd/juju/get.go 2012-09-18 11:54:19 +0000
@@ -21,7 +21,7 @@
21 return &cmd.Info{"get", "", "get service config options", ""}21 return &cmd.Info{"get", "", "get service config options", ""}
22}22}
2323
24func (c *GetCommand) Init(f *gnuflag.FlagSet, args []string) error {24func (c *GetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
25 addEnvironFlags(&c.EnvName, f)25 addEnvironFlags(&c.EnvName, f)
26 // TODO(dfc) add json formatting ?26 // TODO(dfc) add json formatting ?
27 c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{27 c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{
2828
=== modified file 'cmd/juju/set.go'
--- cmd/juju/set.go 2012-09-13 07:22:45 +0000
+++ cmd/juju/set.go 2012-09-18 11:54:19 +0000
@@ -14,7 +14,7 @@
14 EnvName string14 EnvName string
15 ServiceName string15 ServiceName string
16 Options []Option16 Options []Option
17 ConfPath string17 Config cmd.FileVar
18}18}
1919
20type Option struct {20type Option struct {
@@ -25,9 +25,9 @@
25 return &cmd.Info{"set", "", "set service config options", ""}25 return &cmd.Info{"set", "", "set service config options", ""}
26}26}
2727
28func (c *SetCommand) Init(f *gnuflag.FlagSet, args []string) error {28func (c *SetCommand) Init(f *gnuflag.FlagSet, args []string, ctx *cmd.Context) error {
29 addEnvironFlags(&c.EnvName, f)29 addEnvironFlags(&c.EnvName, f)
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)
31 if err := f.Parse(true, args); err != nil {31 if err := f.Parse(true, args); err != nil {
32 return err32 return err
33 }33 }
3434
=== modified file 'cmd/juju/status.go'
--- cmd/juju/status.go 2012-09-04 14:26:44 +0000
+++ cmd/juju/status.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
24 }24 }
25}25}
2626
27func (c *StatusCommand) Init(f *gnuflag.FlagSet, args []string) error {27func (c *StatusCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
28 addEnvironFlags(&c.EnvName, f)28 addEnvironFlags(&c.EnvName, f)
29 c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{29 c.out.AddFlags(f, "yaml", map[string]cmd.Formatter{
30 "yaml": cmd.FormatYaml,30 "yaml": cmd.FormatYaml,
3131
=== modified file 'cmd/juju/unexpose.go'
--- cmd/juju/unexpose.go 2012-09-03 17:35:44 +0000
+++ cmd/juju/unexpose.go 2012-09-18 11:54:19 +0000
@@ -18,7 +18,7 @@
18 return &cmd.Info{"unexpose", "", "unexpose a service", ""}18 return &cmd.Info{"unexpose", "", "unexpose a service", ""}
19}19}
2020
21func (c *UnexposeCommand) Init(f *gnuflag.FlagSet, args []string) error {21func (c *UnexposeCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
22 addEnvironFlags(&c.EnvName, f)22 addEnvironFlags(&c.EnvName, f)
23 if err := f.Parse(true, args); err != nil {23 if err := f.Parse(true, args); err != nil {
24 return err24 return err
2525
=== modified file 'cmd/juju/unexpose_test.go'
--- cmd/juju/unexpose_test.go 2012-09-12 22:31:00 +0000
+++ cmd/juju/unexpose_test.go 2012-09-18 11:54:19 +0000
@@ -16,9 +16,10 @@
1616
17func runUnexpose(c *C, args ...string) error {17func runUnexpose(c *C, args ...string) error {
18 com := &UnexposeCommand{}18 com := &UnexposeCommand{}
19 err := com.Init(newFlagSet(), args)19 ctx := &cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}}
20 err := com.Init(newFlagSet(), args, ctx)
20 c.Assert(err, IsNil)21 c.Assert(err, IsNil)
21 return com.Run(&cmd.Context{c.MkDir(), &bytes.Buffer{}, &bytes.Buffer{}, &bytes.Buffer{}})22 return com.Run(ctx)
22}23}
2324
24func (s *UnexposeSuite) assertExposed(c *C, service string, expected bool) {25func (s *UnexposeSuite) assertExposed(c *C, service string, expected bool) {
2526
=== modified file 'cmd/juju/upgradejuju.go'
--- cmd/juju/upgradejuju.go 2012-09-12 17:15:00 +0000
+++ cmd/juju/upgradejuju.go 2012-09-18 11:54:19 +0000
@@ -28,7 +28,7 @@
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", ""}
29}29}
3030
31func (c *UpgradeJujuCommand) Init(f *gnuflag.FlagSet, args []string) error {31func (c *UpgradeJujuCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
32 addEnvironFlags(&c.EnvName, f)32 addEnvironFlags(&c.EnvName, f)
33 var vers string33 var vers string
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")
3535
=== modified file 'cmd/juju/upgradejuju_test.go'
--- cmd/juju/upgradejuju_test.go 2012-09-12 17:15:00 +0000
+++ cmd/juju/upgradejuju_test.go 2012-09-18 11:54:19 +0000
@@ -164,12 +164,13 @@
164164
165 // Run the command165 // Run the command
166 com := &UpgradeJujuCommand{}166 com := &UpgradeJujuCommand{}
167 err = com.Init(newFlagSet(), test.args)167 ctx := &cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard}
168 err = com.Init(newFlagSet(), test.args, ctx)
168 if test.expectInitErr != "" {169 if test.expectInitErr != "" {
169 c.Check(err, ErrorMatches, test.expectInitErr)170 c.Check(err, ErrorMatches, test.expectInitErr)
170 continue171 continue
171 }172 }
172 err = com.Run(&cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard})173 err = com.Run(ctx)
173 if test.expectErr != "" {174 if test.expectErr != "" {
174 c.Check(err, ErrorMatches, test.expectErr)175 c.Check(err, ErrorMatches, test.expectErr)
175 continue176 continue
@@ -212,9 +213,10 @@
212func (s *UpgradeJujuSuite) TestUpgradeJujuWithRealPutTools(c *C) {213func (s *UpgradeJujuSuite) TestUpgradeJujuWithRealPutTools(c *C) {
213 s.Reset(c)214 s.Reset(c)
214 com := &UpgradeJujuCommand{}215 com := &UpgradeJujuCommand{}
215 err := com.Init(newFlagSet(), []string{"--upload-tools", "--dev"})216 ctx := &cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard}
217 err := com.Init(newFlagSet(), []string{"--upload-tools", "--dev"}, ctx)
216 c.Assert(err, IsNil)218 c.Assert(err, IsNil)
217 err = com.Run(&cmd.Context{c.MkDir(), nil, ioutil.Discard, ioutil.Discard})219 err = com.Run(ctx)
218 c.Assert(err, IsNil)220 c.Assert(err, IsNil)
219 p := environs.ToolsStoragePath(version.Current)221 p := environs.ToolsStoragePath(version.Current)
220 r, err := s.Conn.Environ.Storage().Get(p)222 r, err := s.Conn.Environ.Storage().Get(p)
221223
=== modified file 'cmd/jujuc/main_test.go'
--- cmd/jujuc/main_test.go 2012-08-07 16:23:28 +0000
+++ cmd/jujuc/main_test.go 2012-09-18 11:54:19 +0000
@@ -49,7 +49,7 @@
49 "remote", "", "test jujuc", "here is some documentation"}49 "remote", "", "test jujuc", "here is some documentation"}
50}50}
5151
52func (c *RemoteCommand) Init(f *gnuflag.FlagSet, args []string) error {52func (c *RemoteCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
53 f.StringVar(&c.msg, "error", "", "if set, fail")53 f.StringVar(&c.msg, "error", "", "if set, fail")
54 if err := f.Parse(true, args); err != nil {54 if err := f.Parse(true, args); err != nil {
55 return err55 return err
5656
=== modified file 'cmd/jujuc/server/config-get.go'
--- cmd/jujuc/server/config-get.go 2012-07-31 21:36:59 +0000
+++ cmd/jujuc/server/config-get.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
24 }24 }
25}25}
2626
27func (c *ConfigGetCommand) Init(f *gnuflag.FlagSet, args []string) error {27func (c *ConfigGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
28 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)28 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
29 if err := f.Parse(true, args); err != nil {29 if err := f.Parse(true, args); err != nil {
30 return err30 return err
3131
=== modified file 'cmd/jujuc/server/config-get_test.go'
--- cmd/jujuc/server/config-get_test.go 2012-07-31 21:36:59 +0000
+++ cmd/jujuc/server/config-get_test.go 2012-09-18 11:54:19 +0000
@@ -97,6 +97,6 @@
97 hctx := s.GetHookContext(c, -1, "")97 hctx := s.GetHookContext(c, -1, "")
98 com, err := hctx.NewCommand("config-get")98 com, err := hctx.NewCommand("config-get")
99 c.Assert(err, IsNil)99 c.Assert(err, IsNil)
100 err = com.Init(dummyFlagSet(), []string{"multiple", "keys"})100 err = com.Init(dummyFlagSet(), []string{"multiple", "keys"}, nil)
101 c.Assert(err, ErrorMatches, `unrecognized args: \["keys"\]`)101 c.Assert(err, ErrorMatches, `unrecognized args: \["keys"\]`)
102}102}
103103
=== modified file 'cmd/jujuc/server/juju-log.go'
--- cmd/jujuc/server/juju-log.go 2012-08-06 16:41:17 +0000
+++ cmd/jujuc/server/juju-log.go 2012-09-18 11:54:19 +0000
@@ -23,7 +23,7 @@
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", ""}
24}24}
2525
26func (c *JujuLogCommand) Init(f *gnuflag.FlagSet, args []string) error {26func (c *JujuLogCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
27 f.BoolVar(&c.Debug, "debug", false, "log at debug level")27 f.BoolVar(&c.Debug, "debug", false, "log at debug level")
28 if err := f.Parse(true, args); err != nil {28 if err := f.Parse(true, args); err != nil {
29 return err29 return err
3030
=== modified file 'cmd/jujuc/server/juju-log_test.go'
--- cmd/jujuc/server/juju-log_test.go 2012-08-01 15:48:38 +0000
+++ cmd/jujuc/server/juju-log_test.go 2012-09-18 11:54:19 +0000
@@ -82,6 +82,6 @@
82 ctx := &server.HookContext{}82 ctx := &server.HookContext{}
83 com, err := ctx.NewCommand("juju-log")83 com, err := ctx.NewCommand("juju-log")
84 c.Assert(err, IsNil)84 c.Assert(err, IsNil)
85 err = com.Init(dummyFlagSet(), nil)85 err = com.Init(dummyFlagSet(), nil, nil)
86 c.Assert(err, ErrorMatches, "no message specified")86 c.Assert(err, ErrorMatches, "no message specified")
87}87}
8888
=== modified file 'cmd/jujuc/server/ports.go'
--- cmd/jujuc/server/ports.go 2012-07-30 14:30:00 +0000
+++ cmd/jujuc/server/ports.go 2012-09-18 11:54:19 +0000
@@ -28,7 +28,7 @@
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)
29}29}
3030
31func (c *portCommand) Init(f *gnuflag.FlagSet, args []string) error {31func (c *portCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
32 if err := f.Parse(true, args); err != nil {32 if err := f.Parse(true, args); err != nil {
33 return err33 return err
34 }34 }
3535
=== modified file 'cmd/jujuc/server/ports_test.go'
--- cmd/jujuc/server/ports_test.go 2012-07-30 14:30:00 +0000
+++ cmd/jujuc/server/ports_test.go 2012-09-18 11:54:19 +0000
@@ -58,7 +58,7 @@
58 hctx := s.GetHookContext(c, -1, "")58 hctx := s.GetHookContext(c, -1, "")
59 com, err := hctx.NewCommand(name)59 com, err := hctx.NewCommand(name)
60 c.Assert(err, IsNil)60 c.Assert(err, IsNil)
61 err = com.Init(dummyFlagSet(), t.args)61 err = com.Init(dummyFlagSet(), t.args, nil)
62 c.Assert(err, ErrorMatches, t.err)62 c.Assert(err, ErrorMatches, t.err)
63 }63 }
64 }64 }
6565
=== modified file 'cmd/jujuc/server/relation-get.go'
--- cmd/jujuc/server/relation-get.go 2012-08-07 14:22:28 +0000
+++ cmd/jujuc/server/relation-get.go 2012-09-18 11:54:19 +0000
@@ -34,7 +34,7 @@
34 }34 }
35}35}
3636
37func (c *RelationGetCommand) Init(f *gnuflag.FlagSet, args []string) error {37func (c *RelationGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
38 // TODO FWER implement --format shell lp:103351138 // TODO FWER implement --format shell lp:1033511
39 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)39 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
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")
4141
=== modified file 'cmd/jujuc/server/relation-ids.go'
--- cmd/jujuc/server/relation-ids.go 2012-08-07 12:41:54 +0000
+++ cmd/jujuc/server/relation-ids.go 2012-09-18 11:54:19 +0000
@@ -30,7 +30,7 @@
30 }30 }
31}31}
3232
33func (c *RelationIdsCommand) Init(f *gnuflag.FlagSet, args []string) error {33func (c *RelationIdsCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
34 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)34 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
35 if err := f.Parse(true, args); err != nil {35 if err := f.Parse(true, args); err != nil {
36 return err36 return err
3737
=== modified file 'cmd/jujuc/server/relation-list.go'
--- cmd/jujuc/server/relation-list.go 2012-08-07 14:22:28 +0000
+++ cmd/jujuc/server/relation-list.go 2012-09-18 11:54:19 +0000
@@ -29,7 +29,7 @@
29 }29 }
30}30}
3131
32func (c *RelationListCommand) Init(f *gnuflag.FlagSet, args []string) (err error) {32func (c *RelationListCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) (err error) {
33 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)33 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
34 if err := f.Parse(true, args); err != nil {34 if err := f.Parse(true, args); err != nil {
35 return err35 return err
3636
=== modified file 'cmd/jujuc/server/relation-set.go'
--- cmd/jujuc/server/relation-set.go 2012-08-07 14:22:28 +0000
+++ cmd/jujuc/server/relation-set.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
24 }24 }
25}25}
2626
27func (c *RelationSetCommand) Init(f *gnuflag.FlagSet, args []string) error {27func (c *RelationSetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
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")
29 if err := f.Parse(true, args); err != nil {29 if err := f.Parse(true, args); err != nil {
30 return err30 return err
3131
=== modified file 'cmd/jujuc/server/relation-set_test.go'
--- cmd/jujuc/server/relation-set_test.go 2012-08-07 14:22:28 +0000
+++ cmd/jujuc/server/relation-set_test.go 2012-09-18 11:54:19 +0000
@@ -152,7 +152,7 @@
152 hctx := s.GetHookContext(c, t.ctxrelid, "")152 hctx := s.GetHookContext(c, t.ctxrelid, "")
153 com, err := hctx.NewCommand("relation-set")153 com, err := hctx.NewCommand("relation-set")
154 c.Assert(err, IsNil)154 c.Assert(err, IsNil)
155 err = com.Init(dummyFlagSet(), t.args)155 err = com.Init(dummyFlagSet(), t.args, nil)
156 if t.err == "" {156 if t.err == "" {
157 c.Assert(err, IsNil)157 c.Assert(err, IsNil)
158 rset := com.(*server.RelationSetCommand)158 rset := com.(*server.RelationSetCommand)
159159
=== modified file 'cmd/jujuc/server/server_test.go'
--- cmd/jujuc/server/server_test.go 2012-08-18 09:09:37 +0000
+++ cmd/jujuc/server/server_test.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
24 return &cmd.Info{"remote", "", "act at a distance", "blah doc"}24 return &cmd.Info{"remote", "", "act at a distance", "blah doc"}
25}25}
2626
27func (c *RpcCommand) Init(f *gnuflag.FlagSet, args []string) error {27func (c *RpcCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
28 f.StringVar(&c.Value, "value", "", "doc")28 f.StringVar(&c.Value, "value", "", "doc")
29 f.BoolVar(&c.Slow, "slow", false, "doc")29 f.BoolVar(&c.Slow, "slow", false, "doc")
30 if err := f.Parse(true, args); err != nil {30 if err := f.Parse(true, args); err != nil {
3131
=== modified file 'cmd/jujuc/server/unit-get.go'
--- cmd/jujuc/server/unit-get.go 2012-07-31 21:36:59 +0000
+++ cmd/jujuc/server/unit-get.go 2012-09-18 11:54:19 +0000
@@ -24,7 +24,7 @@
24 }24 }
25}25}
2626
27func (c *UnitGetCommand) Init(f *gnuflag.FlagSet, args []string) error {27func (c *UnitGetCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
28 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)28 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
29 if err := f.Parse(true, args); err != nil {29 if err := f.Parse(true, args); err != nil {
30 return err30 return err
3131
=== modified file 'cmd/jujuc/server/unit-get_test.go'
--- cmd/jujuc/server/unit-get_test.go 2012-07-31 21:36:59 +0000
+++ cmd/jujuc/server/unit-get_test.go 2012-09-18 11:54:19 +0000
@@ -83,7 +83,7 @@
83 hctx := s.GetHookContext(c, -1, "")83 hctx := s.GetHookContext(c, -1, "")
84 com, err := hctx.NewCommand("unit-get")84 com, err := hctx.NewCommand("unit-get")
85 c.Assert(err, IsNil)85 c.Assert(err, IsNil)
86 err = com.Init(dummyFlagSet(), []string{"protected-address"})86 err = com.Init(dummyFlagSet(), []string{"protected-address"}, nil)
87 c.Assert(err, ErrorMatches, `unknown setting "protected-address"`)87 c.Assert(err, ErrorMatches, `unknown setting "protected-address"`)
88}88}
8989
@@ -91,6 +91,6 @@
91 hctx := s.GetHookContext(c, -1, "")91 hctx := s.GetHookContext(c, -1, "")
92 com, err := hctx.NewCommand("unit-get")92 com, err := hctx.NewCommand("unit-get")
93 c.Assert(err, IsNil)93 c.Assert(err, IsNil)
94 err = com.Init(dummyFlagSet(), []string{"private-address", "blah"})94 err = com.Init(dummyFlagSet(), []string{"private-address", "blah"}, nil)
95 c.Assert(err, ErrorMatches, `unrecognized args: \["blah"\]`)95 c.Assert(err, ErrorMatches, `unrecognized args: \["blah"\]`)
96}96}
9797
=== modified file 'cmd/jujud/bootstrap.go'
--- cmd/jujud/bootstrap.go 2012-09-09 20:10:46 +0000
+++ cmd/jujud/bootstrap.go 2012-09-18 11:54:19 +0000
@@ -21,7 +21,7 @@
21}21}
2222
23// Init initializes the command for running.23// Init initializes the command for running.
24func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string) error {24func (c *BootstrapCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
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")
26 f.StringVar(&c.InstanceId, "instance-id", "", "instance id of this machine")26 f.StringVar(&c.InstanceId, "instance-id", "", "instance id of this machine")
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)")
2828
=== modified file 'cmd/jujud/machine.go'
--- cmd/jujud/machine.go 2012-09-12 15:35:55 +0000
+++ cmd/jujud/machine.go 2012-09-18 11:54:19 +0000
@@ -25,7 +25,7 @@
25}25}
2626
27// Init initializes the command for running.27// Init initializes the command for running.
28func (a *MachineAgent) Init(f *gnuflag.FlagSet, args []string) error {28func (a *MachineAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
29 a.Conf.addFlags(f)29 a.Conf.addFlags(f)
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")
31 if err := f.Parse(true, args); err != nil {31 if err := f.Parse(true, args); err != nil {
3232
=== modified file 'cmd/jujud/provisioning.go'
--- cmd/jujud/provisioning.go 2012-08-27 23:27:57 +0000
+++ cmd/jujud/provisioning.go 2012-09-18 11:54:19 +0000
@@ -31,7 +31,7 @@
31}31}
3232
33// Init initializes the command for running.33// Init initializes the command for running.
34func (a *ProvisioningAgent) Init(f *gnuflag.FlagSet, args []string) error {34func (a *ProvisioningAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
35 a.Conf.addFlags(f)35 a.Conf.addFlags(f)
36 if err := f.Parse(true, args); err != nil {36 if err := f.Parse(true, args); err != nil {
37 return err37 return err
3838
=== modified file 'cmd/jujud/unit.go'
--- cmd/jujud/unit.go 2012-09-12 17:26:56 +0000
+++ cmd/jujud/unit.go 2012-09-18 11:54:19 +0000
@@ -25,7 +25,7 @@
25}25}
2626
27// Init initializes the command for running.27// Init initializes the command for running.
28func (a *UnitAgent) Init(f *gnuflag.FlagSet, args []string) error {28func (a *UnitAgent) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
29 a.Conf.addFlags(f)29 a.Conf.addFlags(f)
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")
31 if err := f.Parse(true, args); err != nil {31 if err := f.Parse(true, args); err != nil {
3232
=== modified file 'cmd/jujud/util_test.go'
--- cmd/jujud/util_test.go 2012-09-12 17:10:28 +0000
+++ cmd/jujud/util_test.go 2012-09-18 11:54:19 +0000
@@ -12,7 +12,7 @@
12func initCmd(c cmd.Command, args []string) error {12func initCmd(c cmd.Command, args []string) error {
13 f := gnuflag.NewFlagSet("", gnuflag.ContinueOnError)13 f := gnuflag.NewFlagSet("", gnuflag.ContinueOnError)
14 f.SetOutput(ioutil.Discard)14 f.SetOutput(ioutil.Discard)
15 return c.Init(f, args)15 return c.Init(f, args, nil)
16}16}
1717
18// CheckAgentCommand is a utility function for verifying that common agent18// CheckAgentCommand is a utility function for verifying that common agent
1919
=== modified file 'cmd/jujud/version.go'
--- cmd/jujud/version.go 2012-08-16 17:09:22 +0000
+++ cmd/jujud/version.go 2012-09-18 11:54:19 +0000
@@ -15,7 +15,7 @@
15 return &cmd.Info{"version", "", "print the current version", ""}15 return &cmd.Info{"version", "", "print the current version", ""}
16}16}
1717
18func (v *VersionCommand) Init(f *gnuflag.FlagSet, args []string) error {18func (v *VersionCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
19 v.out.AddFlags(f, "smart", cmd.DefaultFormatters)19 v.out.AddFlags(f, "smart", cmd.DefaultFormatters)
20 if err := f.Parse(true, args); err != nil {20 if err := f.Parse(true, args); err != nil {
21 return err21 return err
2222
=== modified file 'cmd/output_test.go'
--- cmd/output_test.go 2012-08-07 16:23:28 +0000
+++ cmd/output_test.go 2012-09-18 11:54:19 +0000
@@ -16,7 +16,7 @@
16 return &cmd.Info{"output", "<something>", "I like to output", "output"}16 return &cmd.Info{"output", "<something>", "I like to output", "output"}
17}17}
1818
19func (c *OutputCommand) Init(f *gnuflag.FlagSet, args []string) error {19func (c *OutputCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
20 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)20 c.out.AddFlags(f, "smart", cmd.DefaultFormatters)
21 if err := f.Parse(true, args); err != nil {21 if err := f.Parse(true, args); err != nil {
22 return err22 return err
2323
=== modified file 'cmd/supercommand.go'
--- cmd/supercommand.go 2012-05-18 09:52:31 +0000
+++ cmd/supercommand.go 2012-09-18 11:54:19 +0000
@@ -75,7 +75,7 @@
75}75}
7676
77// Init initializes the command for running.77// Init initializes the command for running.
78func (c *SuperCommand) Init(f *gnuflag.FlagSet, args []string) error {78func (c *SuperCommand) Init(f *gnuflag.FlagSet, args []string, ctx *Context) error {
79 if c.Log != nil {79 if c.Log != nil {
80 c.Log.AddFlags(f)80 c.Log.AddFlags(f)
81 }81 }
@@ -90,7 +90,7 @@
90 if c.subcmd, found = c.subcmds[subargs[0]]; !found {90 if c.subcmd, found = c.subcmds[subargs[0]]; !found {
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])
92 }92 }
93 return c.subcmd.Init(f, subargs[1:])93 return c.subcmd.Init(f, subargs[1:], ctx)
94}94}
9595
96// Run executes the subcommand that was selected in Init.96// Run executes the subcommand that was selected in Init.
9797
=== modified file 'cmd/supercommand_test.go'
--- cmd/supercommand_test.go 2012-06-21 20:40:39 +0000
+++ cmd/supercommand_test.go 2012-09-18 11:54:19 +0000
@@ -10,7 +10,7 @@
10 jc := &cmd.SuperCommand{Name: "jujutest"}10 jc := &cmd.SuperCommand{Name: "jujutest"}
11 tc := &TestCommand{Name: "defenestrate"}11 tc := &TestCommand{Name: "defenestrate"}
12 jc.Register(tc)12 jc.Register(tc)
13 return jc, tc, jc.Init(dummyFlagSet(), args)13 return jc, tc, jc.Init(dummyFlagSet(), args, nil)
14}14}
1515
16type SuperCommandSuite struct{}16type SuperCommandSuite struct{}
@@ -19,7 +19,7 @@
1919
20func (s *SuperCommandSuite) TestDispatch(c *C) {20func (s *SuperCommandSuite) TestDispatch(c *C) {
21 jc := &cmd.SuperCommand{Name: "jujutest"}21 jc := &cmd.SuperCommand{Name: "jujutest"}
22 err := jc.Init(dummyFlagSet(), []string{})22 err := jc.Init(dummyFlagSet(), []string{}, nil)
23 c.Assert(err, ErrorMatches, `no command specified`)23 c.Assert(err, ErrorMatches, `no command specified`)
24 info := jc.Info()24 info := jc.Info()
25 c.Assert(info.Name, Equals, "jujutest")25 c.Assert(info.Name, Equals, "jujutest")
2626
=== modified file 'cmd/util_test.go'
--- cmd/util_test.go 2012-09-10 03:51:34 +0000
+++ cmd/util_test.go 2012-09-18 11:54:19 +0000
@@ -36,7 +36,7 @@
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"}
37}37}
3838
39func (c *TestCommand) Init(f *gnuflag.FlagSet, args []string) error {39func (c *TestCommand) Init(f *gnuflag.FlagSet, args []string, _ *cmd.Context) error {
40 if !c.Minimal {40 if !c.Minimal {
41 f.StringVar(&c.Option, "option", "", "option-doc")41 f.StringVar(&c.Option, "option", "", "option-doc")
42 }42 }

Subscribers

People subscribed via source and target branches