@@ -17,7 +17,7 @@ type PlanCommand struct {
1717
1818func (c * PlanCommand ) Run (args []string ) int {
1919 var destroy , refresh bool
20- var outPath , statePath , backupPath string
20+ var outPath string
2121 var moduleDepth int
2222
2323 args = c .Meta .process (args , true )
@@ -27,8 +27,8 @@ func (c *PlanCommand) Run(args []string) int {
2727 cmdFlags .BoolVar (& refresh , "refresh" , true , "refresh" )
2828 cmdFlags .IntVar (& moduleDepth , "module-depth" , 0 , "module-depth" )
2929 cmdFlags .StringVar (& outPath , "out" , "" , "path" )
30- cmdFlags .StringVar (& statePath , "state" , DefaultStateFilename , "path" )
31- cmdFlags .StringVar (& backupPath , "backup" , "" , "path" )
30+ cmdFlags .StringVar (& c . Meta . statePath , "state" , DefaultStateFilename , "path" )
31+ cmdFlags .StringVar (& c . Meta . backupPath , "backup" , "" , "path" )
3232 cmdFlags .Usage = func () { c .Ui .Error (c .Help ()) }
3333 if err := cmdFlags .Parse (args ); err != nil {
3434 return 1
@@ -52,24 +52,9 @@ func (c *PlanCommand) Run(args []string) int {
5252 }
5353 }
5454
55- // If the default state path doesn't exist, ignore it.
56- if statePath != "" {
57- if _ , err := os .Stat (statePath ); err != nil {
58- if os .IsNotExist (err ) && statePath == DefaultStateFilename {
59- statePath = ""
60- }
61- }
62- }
63-
64- // If we don't specify a backup path, default to state out with
65- // the extension
66- if backupPath == "" {
67- backupPath = statePath + DefaultBackupExtention
68- }
69-
7055 ctx , _ , err := c .Context (contextOpts {
7156 Path : path ,
72- StatePath : statePath ,
57+ StatePath : c . Meta . statePath ,
7358 })
7459 if err != nil {
7560 c .Ui .Error (err .Error ())
@@ -84,26 +69,21 @@ func (c *PlanCommand) Run(args []string) int {
8469 }
8570
8671 if refresh {
87- // Create a backup of the state before updating
88- if backupPath != "-" && c .state != nil {
89- log .Printf ("[INFO] Writing backup state to: %s" , backupPath )
90- f , err := os .Create (backupPath )
91- if err == nil {
92- err = terraform .WriteState (c .state , f )
93- f .Close ()
94- }
95- if err != nil {
96- c .Ui .Error (fmt .Sprintf ("Error writing backup state file: %s" , err ))
97- return 1
98- }
99- }
100-
10172 c .Ui .Output ("Refreshing Terraform state prior to plan...\n " )
102- if _ , err := ctx .Refresh (); err != nil {
73+ state , err := ctx .Refresh ()
74+ if err != nil {
10375 c .Ui .Error (fmt .Sprintf ("Error refreshing state: %s" , err ))
10476 return 1
10577 }
10678 c .Ui .Output ("" )
79+
80+ if state != nil {
81+ log .Printf ("[INFO] Writing state output to: %s" , c .Meta .StateOutPath ())
82+ if err := c .Meta .PersistState (state ); err != nil {
83+ c .Ui .Error (fmt .Sprintf ("Error writing state file: %s" , err ))
84+ return 1
85+ }
86+ }
10787 }
10888
10989 plan , err := ctx .Plan (& terraform.PlanOpts {Destroy : destroy })
0 commit comments