command: get supports -update

This commit is contained in:
Mitchell Hashimoto 2014-09-22 11:18:49 -07:00
parent 1b8426f7ff
commit 6f7c3caab3
3 changed files with 48 additions and 2 deletions

View File

@ -16,9 +16,12 @@ type GetCommand struct {
} }
func (c *GetCommand) Run(args []string) int { func (c *GetCommand) Run(args []string) int {
var update bool
args = c.Meta.process(args, false) args = c.Meta.process(args, false)
cmdFlags := flag.NewFlagSet("get", flag.ContinueOnError) cmdFlags := flag.NewFlagSet("get", flag.ContinueOnError)
cmdFlags.BoolVar(&update, "update", false, "update")
cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } cmdFlags.Usage = func() { c.Ui.Error(c.Help()) }
if err := cmdFlags.Parse(args); err != nil { if err := cmdFlags.Parse(args); err != nil {
return 1 return 1
@ -40,9 +43,14 @@ func (c *GetCommand) Run(args []string) int {
} }
} }
mode := module.GetModeGet
if update {
mode = module.GetModeUpdate
}
_, _, err := c.Context(contextOpts{ _, _, err := c.Context(contextOpts{
Path: path, Path: path,
GetMode: module.GetModeGet, GetMode: mode,
}) })
if err != nil { if err != nil {
c.Ui.Error(fmt.Sprintf("Error loading Terraform: %s", err)) c.Ui.Error(fmt.Sprintf("Error loading Terraform: %s", err))

View File

@ -28,6 +28,9 @@ func TestGet(t *testing.T) {
if !strings.Contains(output, "Get: file://") { if !strings.Contains(output, "Get: file://") {
t.Fatalf("doesn't look like get: %s", output) t.Fatalf("doesn't look like get: %s", output)
} }
if strings.Contains(output, "(update)") {
t.Fatalf("doesn't look like get: %s", output)
}
} }
func TestGet_multipleArgs(t *testing.T) { func TestGet_multipleArgs(t *testing.T) {
@ -75,4 +78,34 @@ func TestGet_noArgs(t *testing.T) {
if !strings.Contains(output, "Get: file://") { if !strings.Contains(output, "Get: file://") {
t.Fatalf("doesn't look like get: %s", output) t.Fatalf("doesn't look like get: %s", output)
} }
if strings.Contains(output, "(update)") {
t.Fatalf("doesn't look like get: %s", output)
}
} }
func TestGet_update(t *testing.T) {
ui := new(cli.MockUi)
c := &GetCommand{
Meta: Meta{
ContextOpts: testCtxConfig(testProvider()),
Ui: ui,
},
}
args := []string{
"-update",
testFixturePath("get"),
}
if code := c.Run(args); code != 0 {
t.Fatalf("bad: \n%s", ui.ErrorWriter.String())
}
output := ui.OutputWriter.String()
if !strings.Contains(output, "Get: file://") {
t.Fatalf("doesn't look like get: %s", output)
}
if !strings.Contains(output, "(update)") {
t.Fatalf("doesn't look like get: %s", output)
}
}

View File

@ -19,6 +19,11 @@ func (s *uiModuleStorage) Dir(source string) (string, bool, error) {
} }
func (s *uiModuleStorage) Get(source string, update bool) error { func (s *uiModuleStorage) Get(source string, update bool) error {
s.Ui.Output(fmt.Sprintf("Get: %s", source)) updateStr := ""
if update {
updateStr = " (update)"
}
s.Ui.Output(fmt.Sprintf("Get: %s%s", source, updateStr))
return s.Storage.Get(source, update) return s.Storage.Get(source, update)
} }