command/plan: show a warning when a plan file is given

pull/10639/head
Mitchell Hashimoto 9 years ago
parent 7f87a0109b
commit 36ff8b3c02
No known key found for this signature in database
GPG Key ID: 744E147AA52F5B0A

@ -72,11 +72,15 @@ func (c *PlanCommand) Run(args []string) int {
return 1
}
if planned {
c.Ui.Error(
"The plan command cannot be called with a saved plan file.\n\n" +
"The plan command expects a configuration directory as an argument.",
)
return 1
c.Ui.Output(c.Colorize().Color(
"[reset][bold][yellow]" +
"The plan command received a saved plan file as input. This command\n" +
"will output the saved plan. This will not modify the already-existing\n" +
"plan. If you wish to generate a new plan, please pass in a configuration\n" +
"directory as an argument.\n\n"))
// Disable refreshing no matter what since we only want to show the plan
refresh = false
}
err = terraform.SetDebugInfo(DefaultDataDir)
@ -178,7 +182,7 @@ func (c *PlanCommand) Run(args []string) int {
func (c *PlanCommand) Help() string {
helpText := `
Usage: terraform plan [options] [dir]
Usage: terraform plan [options] [DIR-OR-PLAN]
Generates an execution plan for Terraform.
@ -187,6 +191,9 @@ Usage: terraform plan [options] [dir]
a Terraform plan file, and apply can take this plan file to execute
this plan exactly.
If a saved plan is passed as an argument, this command will output
the saved plan contents. It will not modify the given plan.
Options:
-destroy If set, a plan will be generated to destroy all resources

@ -55,9 +55,13 @@ func TestPlan_plan(t *testing.T) {
}
args := []string{planPath}
if code := c.Run(args); code != 1 {
if code := c.Run(args); code != 0 {
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
}
if p.RefreshCalled {
t.Fatal("refresh should not be called")
}
}
func TestPlan_destroy(t *testing.T) {

@ -16,11 +16,16 @@ to `terraform apply` to ensure only the pre-planned actions are executed.
## Usage
Usage: `terraform plan [options] [dir]`
Usage: `terraform plan [options] [dir-or-plan]`
By default, `plan` requires no flags and looks in the current directory
for the configuration and state file to refresh.
If the command is given an existing saved plan as an argument, the
command will output the contents of the saved plan. In this scenario,
the `plan` command will not modify the given plan. This can be used to
inspect a planfile.
The command-line flags are all optional. The list of available flags are:
* `-destroy` - If set, generates a plan to destroy all the known resources.

Loading…
Cancel
Save