terraspace 0.5.12 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -7
  3. data/README.md +2 -0
  4. data/lib/terraspace/app.rb +35 -15
  5. data/lib/terraspace/app/inits.rb +13 -0
  6. data/lib/terraspace/booter.rb +19 -2
  7. data/lib/terraspace/cli.rb +18 -5
  8. data/lib/terraspace/cli/commander.rb +1 -1
  9. data/lib/terraspace/cli/concerns/source_dirs.rb +13 -0
  10. data/lib/terraspace/cli/down.rb +1 -1
  11. data/lib/terraspace/cli/fmt.rb +21 -0
  12. data/lib/terraspace/cli/fmt/runner.rb +64 -0
  13. data/lib/terraspace/cli/help/fmt.md +10 -0
  14. data/lib/terraspace/cli/help/{cloud → tfc}/destroy.md +1 -1
  15. data/lib/terraspace/cli/help/{cloud → tfc}/list.md +1 -1
  16. data/lib/terraspace/cli/help/{cloud → tfc}/runs/list.md +3 -3
  17. data/lib/terraspace/cli/help/{cloud → tfc}/runs/prune.md +3 -3
  18. data/lib/terraspace/cli/help/{cloud → tfc}/sync.md +3 -3
  19. data/lib/terraspace/cli/init.rb +21 -8
  20. data/lib/terraspace/cli/list.rb +3 -2
  21. data/lib/terraspace/cli/new/helper.rb +2 -2
  22. data/lib/terraspace/cli/state.rb +10 -0
  23. data/lib/terraspace/cli/{cloud.rb → tfc.rb} +3 -3
  24. data/lib/terraspace/cli/{cloud → tfc}/runs.rb +4 -4
  25. data/lib/terraspace/compiler/builder.rb +4 -1
  26. data/lib/terraspace/compiler/helper_extender.rb +3 -3
  27. data/lib/terraspace/compiler/strategy/tfvar.rb +16 -4
  28. data/lib/terraspace/compiler/strategy/tfvar/layer.rb +75 -52
  29. data/lib/terraspace/ext.rb +1 -0
  30. data/lib/terraspace/ext/core/string.rb +5 -0
  31. data/lib/terraspace/layering.rb +24 -0
  32. data/lib/terraspace/logger.rb +8 -1
  33. data/lib/terraspace/mod.rb +18 -3
  34. data/lib/terraspace/plugin/expander/friendly.rb +10 -0
  35. data/lib/terraspace/plugin/expander/interface.rb +6 -1
  36. data/lib/terraspace/plugin/summary/interface.rb +1 -1
  37. data/lib/terraspace/shell.rb +16 -1
  38. data/lib/terraspace/terraform/api/runs.rb +13 -2
  39. data/lib/terraspace/terraform/api/token.rb +2 -2
  40. data/lib/terraspace/terraform/api/var.rb +1 -1
  41. data/lib/terraspace/terraform/api/vars.rb +1 -1
  42. data/lib/terraspace/terraform/api/vars/base.rb +2 -0
  43. data/lib/terraspace/terraform/api/vars/json.rb +13 -1
  44. data/lib/terraspace/terraform/api/workspace.rb +10 -3
  45. data/lib/terraspace/terraform/args/default.rb +23 -13
  46. data/lib/terraspace/terraform/ihooks/after/plan.rb +17 -0
  47. data/lib/terraspace/terraform/ihooks/base.rb +8 -0
  48. data/lib/terraspace/terraform/ihooks/before/plan.rb +14 -0
  49. data/lib/terraspace/terraform/remote_state/fetcher.rb +1 -1
  50. data/lib/terraspace/terraform/runner.rb +12 -0
  51. data/lib/terraspace/terraform/{cloud → tfc}/runs.rb +1 -1
  52. data/lib/terraspace/terraform/{cloud → tfc}/runs/base.rb +1 -1
  53. data/lib/terraspace/terraform/{cloud → tfc}/runs/item_presenter.rb +1 -1
  54. data/lib/terraspace/terraform/{cloud → tfc}/runs/lister.rb +1 -1
  55. data/lib/terraspace/terraform/{cloud → tfc}/runs/pruner.rb +1 -1
  56. data/lib/terraspace/terraform/{cloud → tfc}/sync.rb +2 -2
  57. data/lib/terraspace/terraform/{cloud → tfc}/syncer.rb +1 -1
  58. data/lib/terraspace/terraform/{cloud → tfc}/workspace.rb +2 -3
  59. data/lib/terraspace/util/pretty.rb +2 -1
  60. data/lib/terraspace/version.rb +1 -1
  61. metadata +29 -18
  62. data/lib/terraspace/app/hooks.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85fe397ec78c3f7aef5a84305c0a1f64bb6c8f1fe600f42b0d6595de4b5e579b
4
- data.tar.gz: 5549151c17289da5bf06dcdbae93437cd53ec338c1e8f6649fef7f2c71eb21da
3
+ metadata.gz: 56392f488a05d42760586d379da36022589979733b654ea3f5f3d5fcb879de26
4
+ data.tar.gz: 690b3d0fa3e192aee02fd34ae187ab4628caccd335a1733ce10040ff2ef55b32
5
5
  SHA512:
6
- metadata.gz: 3155ac6e54e382836f73fa2bd3904544bbc9be86eb9a7f4a140a78062e83c320c493efc67fa92db0fa5d5a7e994d8293b674f324f70ff39b5242130883d6c28c
7
- data.tar.gz: 368950badea2768a4221593d65eadda27c3a84eb4f2f1a9b4af0e5a53da05faa67cbfff8d99850d846c2e64aa110bd347178866e2caa05e9e084c8411489a9af
6
+ metadata.gz: 4dcc7b6c1d1f2d21be6115d02cc34bbeb9f773e6ece16e8549ac3a8e6a4167fb6392a2917399399a0ba0ddde4ff880c9dff8de2ee5261def5250fc2525527ce1
7
+ data.tar.gz: 476d2c10897c2915a3cd601b556e783a639cb29a97c11505b5e34f32d8079c311e5ad8f6efeeee6cf9a143a2f63b9b46b76a9b6741d78802fd53baf8de319b29
data/CHANGELOG.md CHANGED
@@ -3,6 +3,29 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.6.4] - 2021-03-22
7
+ - [#94](https://github.com/boltops-tools/terraspace/pull/94) terraspace fmt command
8
+
9
+ ## [0.6.3] - 2021-03-12
10
+ - [#91](https://github.com/boltops-tools/terraspace/pull/91) Camelcase
11
+ - [#92](https://github.com/boltops-tools/terraspace/pull/92) disable terraform.plugin_cache by default
12
+ - skip build config/helpers
13
+
14
+ ## [0.6.2] - 2021-03-05
15
+ - [#90](https://github.com/boltops-tools/terraspace/pull/90) Boot hooks: new and improved boot hooks interface
16
+ - remove old config.hooks.on_boot
17
+
18
+ ## [0.6.1] - 2021-03-04
19
+ - [#89](https://github.com/boltops-tools/terraspace/pull/89) rename option to enable_names.expansion
20
+
21
+ ## [0.6.0] - 2021-03-03
22
+ - [#87](https://github.com/boltops-tools/terraspace/pull/87) rename cloud to tfc command and improvements
23
+ - [#88](https://github.com/boltops-tools/terraspace/pull/88) custom layering support
24
+ - Improve stdout handling, so this works: `terraspace show demo --json | jq`
25
+ - `terraspace plan --output plan.save` writes to relative cache path.
26
+ - `terraspace up --plan plan.save` copies plan.save to cache path.
27
+ - Add state command. Initial simple version.
28
+
6
29
  ## [0.5.12] - 2021-02-27
7
30
  - [#79](https://github.com/boltops-tools/terraspace/pull/79) Fix syntax issue
8
31
  - [#85](https://github.com/boltops-tools/terraspace/pull/85) Add all.include_stacks option and fix all.ignore_stacks option when building dependency graph
@@ -108,7 +131,7 @@ This project *loosely tries* to adhere to [Semantic Versioning](http://semver.or
108
131
  * fix build for edge case when app/modules exist but app/stacks do not
109
132
  * terraspace new project: do not generate spec folder by default
110
133
  * improve all output summary
111
- * remove redundant `terraspace cloud setup`, instead use: `terraspace cloud sync`
134
+ * remove redundant `terraspace tfc setup`, instead use: `terraspace tfc sync`
112
135
  * improve terraspace info output
113
136
  * fix integration test pipeline
114
137
 
@@ -127,8 +150,8 @@ This project *loosely tries* to adhere to [Semantic Versioning](http://semver.or
127
150
  * Terraspace log: view and tail log files
128
151
  * Terraspace logs management commands: `terraspace logs truncate` and `terraspace logs remove`
129
152
  * TFC/TFE: Improve support. `config.cloud.vars`, `config.cloud.workspace.attrs`
130
- * TFC commands: terraspace cloud runs list, terraspace cloud runs prune
131
- * TFC VCS also sync as part of deploy. Also separate `terraspace cloud sync` command
153
+ * TFC commands: terraspace tfc runs list, terraspace tfc runs prune
154
+ * TFC VCS also sync as part of deploy. Also separate `terraspace tfc sync` command
132
155
  * Logger improvements: configurable formatter, log to stderr by default
133
156
  * Rename: `cloud.relative_root` to `cloud.working_dir_prefix`
134
157
  * Run a plan to capture the diff as part of `-y` option. IE: `terraspace up demo -y`
@@ -161,11 +184,11 @@ This project *loosely tries* to adhere to [Semantic Versioning](http://semver.or
161
184
  * New expander variables: TYPE_INSTANCE, INSTANCE, CACHE_ROOT. Also added strip trailing - and / behavior.
162
185
  * Timeout for terraform init. The default timeout is 10m and will then print out the terraform init log.
163
186
  * Terraspace 0.2.x is compatible with terraspace\_plugin_aws 0.2.x, terraspace\_plugin_google 0.2.x, and terraspace\_plugin_azurerm 0.2.x
164
- * New commands: terraspace list, terraspace cloud list, terraspace cloud setup, terraspace cloud destroy, terraspace new shim, terraspace new git_hook
187
+ * New commands: terraspace list, terraspace tfc list, terraspace tfc setup, terraspace tfc destroy, terraspace new shim, terraspace new git_hook
165
188
  * terraspace list: list of modules and stacks
166
- * terraspace cloud list: shows list of TFC workspaces
167
- * terraspace cloud setup: setups up TFC workspace for VCS-driven workflow. This automatically happens for the TFC CLI-driven workflow.
168
- * terraspace cloud destroy: destroys the TFC workspace associated with the stack. Can also use the `terraspace down demo --destroy-workspace` option.
189
+ * terraspace tfc list: shows list of TFC workspaces
190
+ * terraspace tfc setup: setups up TFC workspace for VCS-driven workflow. This automatically happens for the TFC CLI-driven workflow.
191
+ * terraspace tfc destroy: destroys the TFC workspace associated with the stack. Can also use the `terraspace down demo --destroy-workspace` option.
169
192
  * terraspace new shim: An quick way to generate a terraspace shim.
170
193
  * terraspace new git_hook: An quick way to set up a git pre-push hook for the TFC VCS-driven workflow.
171
194
  * terraspace down: works even if there's no app/stacks folder. A fake stack is built.
data/README.md CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  The Terraform Framework.
12
12
 
13
+ Please **watch/star** this repo to help grow and support the project.
14
+
13
15
  Official Docs Site: [terraspace.cloud](https://terraspace.cloud)
14
16
 
15
17
  Quick Start Demo:
@@ -1,7 +1,9 @@
1
1
  module Terraspace
2
2
  class App
3
- include Singleton
3
+ extend Memoist
4
4
  include DslEvaluator
5
+ include Singleton
6
+ include Terraspace::Util::Logging
5
7
 
6
8
  attr_reader :config
7
9
  def initialize
@@ -9,8 +11,6 @@ module Terraspace
9
11
  end
10
12
 
11
13
  def defaults
12
- ts_logger = Logger.new(ENV['TS_LOG_PATH'] || $stderr)
13
-
14
14
  config = ActiveSupport::OrderedOptions.new
15
15
  config.all = ActiveSupport::OrderedOptions.new
16
16
  config.all.concurrency = 5
@@ -29,17 +29,6 @@ module Terraspace
29
29
  config.build.clean_cache = nil # defaults to /full/path/to/.terraspace-cache
30
30
  config.bundle = ActiveSupport::OrderedOptions.new
31
31
  config.bundle.logger = ts_logger
32
- config.cloud = ActiveSupport::OrderedOptions.new
33
- config.cloud.auto_sync = true
34
- config.cloud.hostname = nil
35
- config.cloud.vars = ActiveSupport::OrderedOptions.new
36
- config.cloud.vars.overwrite = true
37
- config.cloud.vars.overwrite_sensitive = true
38
- config.cloud.vars.show_message = "create"
39
- config.cloud.working_dir_prefix = nil
40
- config.cloud.workspace = ActiveSupport::OrderedOptions.new
41
- config.cloud.workspace.attrs = ActiveSupport::OrderedOptions.new
42
- config.hooks = Hooks.new
43
32
  config.init = ActiveSupport::OrderedOptions.new
44
33
  config.init.mode = "auto" # auto, never, always
45
34
  config.log = ActiveSupport::OrderedOptions.new
@@ -47,22 +36,53 @@ module Terraspace
47
36
  config.logger = ts_logger
48
37
  config.logger.formatter = Logger::Formatter.new
49
38
  config.logger.level = ENV['TS_LOG_LEVEL'] || :info
39
+ config.layering = ActiveSupport::OrderedOptions.new
40
+ config.layering.names = {}
41
+ config.layering.enable_names = ActiveSupport::OrderedOptions.new
42
+ config.layering.enable_names.expansion = true
43
+ config.summary = ActiveSupport::OrderedOptions.new
44
+ config.summary.prune = false
50
45
  config.terraform = ActiveSupport::OrderedOptions.new
51
46
  config.terraform.plugin_cache = ActiveSupport::OrderedOptions.new
52
47
  config.terraform.plugin_cache.dir = ENV['TF_PLUGIN_CACHE_DIR'] || "#{Terraspace.tmp_root}/plugin_cache"
53
- config.terraform.plugin_cache.enabled = true
48
+ config.terraform.plugin_cache.enabled = false
54
49
  config.terraform.plugin_cache.purge_on_error = true
55
50
  config.test_framework = "rspec"
51
+ config.tfc = ActiveSupport::OrderedOptions.new
52
+ config.tfc.auto_sync = true
53
+ config.tfc.hostname = nil
54
+ config.tfc.vars = ActiveSupport::OrderedOptions.new
55
+ config.tfc.vars.overwrite = true
56
+ config.tfc.vars.overwrite_sensitive = true
57
+ config.tfc.vars.show_message = "create"
58
+ config.tfc.working_dir_prefix = nil
59
+ config.tfc.workspace = ActiveSupport::OrderedOptions.new
60
+ config.tfc.workspace.attrs = ActiveSupport::OrderedOptions.new
56
61
  config
57
62
  end
58
63
 
64
+ def ts_logger
65
+ Logger.new(ENV['TS_LOG_PATH'] || $stderr)
66
+ end
67
+ memoize :ts_logger
68
+
59
69
  def configure
60
70
  yield(@config)
61
71
  end
62
72
 
63
73
  def load_project_config
64
74
  evaluate_file("#{Terraspace.root}/config/app.rb")
75
+
76
+ # deprecated config/env for config/envs
65
77
  path = "#{Terraspace.root}/config/env/#{Terraspace.env}.rb"
78
+ if File.exist?(path)
79
+ # so early on in the boot process that logger.info is unavailable, use ts_logger which is available and same thing.
80
+ ts_logger.info "DEPRECATED: Please rename config/env to config/envs. IE:".color(:yellow)
81
+ ts_logger.info " mv config/env config/envs"
82
+ evaluate_file(path)
83
+ end
84
+
85
+ path = "#{Terraspace.root}/config/envs/#{Terraspace.env}.rb"
66
86
  evaluate_file(path)
67
87
  end
68
88
  end
@@ -0,0 +1,13 @@
1
+ class Terraspace::App
2
+ class Inits
3
+ class << self
4
+ include DslEvaluator
5
+
6
+ def run_all
7
+ Dir.glob("#{Terraspace.root}/config/inits/*.rb").each do |path|
8
+ evaluate_file(path)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,10 +1,10 @@
1
1
  module Terraspace
2
2
  module Booter
3
3
  def boot
4
+ run_hooks
4
5
  Terraspace::Bundle.require # load plugins
5
6
  load_plugin_default_configs
6
- Terraspace.config # load project config
7
- Terraspace::App::Hooks.run_hook(:on_boot)
7
+ Terraspace::App::Inits.run_all
8
8
  set_plugin_cache!
9
9
  end
10
10
 
@@ -23,6 +23,23 @@ module Terraspace
23
23
  dir
24
24
  end
25
25
 
26
+ # Special boot hooks run super early, even before plugins are loaded.
27
+ # Useful for setting env vars and other early things.
28
+ #
29
+ # config/boot.rb
30
+ # config/boot/dev.rb
31
+ #
32
+ def run_hooks
33
+ run_hook
34
+ run_hook(Terraspace.env)
35
+ end
36
+
37
+ def run_hook(env=nil)
38
+ name = env ? "boot/#{env}" : "boot"
39
+ path = "#{Terraspace.root}/config/#{name}.rb"
40
+ require path if File.exist?(path)
41
+ end
42
+
26
43
  extend self
27
44
  end
28
45
  end
@@ -10,7 +10,7 @@ module Terraspace
10
10
  option :format, desc: "output formats: json, text"
11
11
  }
12
12
  out_option = Proc.new {
13
- option :out, aliases: :o, desc: "write the output to path"
13
+ option :out, aliases: :o, desc: "Write the output to path"
14
14
  }
15
15
  input_option = Proc.new {
16
16
  option :input, type: :boolean, desc: "Ask for input for variables if not directly set."
@@ -36,14 +36,14 @@ module Terraspace
36
36
  long_desc Help.text(:clean)
37
37
  subcommand "clean", Clean
38
38
 
39
- desc "cloud SUBCOMMAND", "cloud subcommands"
40
- long_desc Help.text(:cloud)
41
- subcommand "cloud", Cloud
42
-
43
39
  desc "new SUBCOMMAND", "new subcommands"
44
40
  long_desc Help.text(:new)
45
41
  subcommand "new", New
46
42
 
43
+ desc "tfc SUBCOMMAND", "tfc subcommands"
44
+ long_desc Help.text(:tfc)
45
+ subcommand "tfc", Tfc
46
+
47
47
  desc "build [STACK]", "Build project."
48
48
  long_desc Help.text(:build)
49
49
  option :quiet, type: :boolean, desc: "quiet output"
@@ -82,6 +82,12 @@ module Terraspace
82
82
  Down.new(options.merge(mod: mod)).run
83
83
  end
84
84
 
85
+ desc "fmt", "Run terraform fmt"
86
+ long_desc Help.text(:fmt)
87
+ def fmt
88
+ Fmt.new(options).run
89
+ end
90
+
85
91
  desc "info STACK", "Get info about stack."
86
92
  long_desc Help.text(:info)
87
93
  instance_option.call
@@ -123,6 +129,7 @@ module Terraspace
123
129
  instance_option.call
124
130
  out_option.call
125
131
  reconfigure_option.call
132
+ option :copy_to_root, type: :boolean, default: true, desc: "Copy plan file generated in the cache folder back to project root"
126
133
  def plan(mod)
127
134
  Commander.new("plan", options.merge(mod: mod)).run
128
135
  end
@@ -169,6 +176,12 @@ module Terraspace
169
176
  Commander.new("show", options.merge(mod: mod)).run
170
177
  end
171
178
 
179
+ desc "state SUBCOMMAND STACK", "Run state."
180
+ long_desc Help.text(:state)
181
+ def state(subcommand, mod)
182
+ State.new(options.merge(subcommand: subcommand, mod: mod)).run
183
+ end
184
+
172
185
  desc "test", "Run test."
173
186
  long_desc Help.text(:test)
174
187
  def test
@@ -7,7 +7,7 @@ class Terraspace::CLI
7
7
 
8
8
  def run
9
9
  Terraspace::Builder.new(@options).run unless @options[:build] # Up already ran build
10
- Init.new(@options.merge(calling_command: @name)).run
10
+ Init.new(@options).run
11
11
  Terraspace::Terraform::Runner.new(@name, @options).run
12
12
  end
13
13
  end
@@ -0,0 +1,13 @@
1
+ module Terraspace::CLI::Concerns
2
+ module SourceDirs
3
+ # used by list
4
+ def source_dirs
5
+ Dir.glob("{app,vendor}/{modules,stacks}/*").select { |p| File.directory?(p) }.sort
6
+ end
7
+
8
+ # dont include vendor: used by fmt
9
+ def app_source_dirs
10
+ Dir.glob("{app}/{modules,stacks}/*").select { |p| File.directory?(p) }.sort
11
+ end
12
+ end
13
+ end
@@ -14,7 +14,7 @@ class Terraspace::CLI
14
14
 
15
15
  def destroy
16
16
  Commander.new("destroy", @options.merge(command: "down")).run
17
- Terraspace::Terraform::Cloud::Workspace.new(@options).destroy if @options[:destroy_workspace]
17
+ Terraspace::Terraform::Tfc::Workspace.new(@options).destroy if @options[:destroy_workspace]
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,21 @@
1
+ class Terraspace::CLI
2
+ class Fmt
3
+ include Concerns::SourceDirs
4
+ include Terraspace::Util::Logging
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ end
9
+
10
+ def run
11
+ logger.info "Formating terraform files"
12
+ app_source_dirs.each do |dir|
13
+ format(dir)
14
+ end
15
+ end
16
+
17
+ def format(dir)
18
+ Runner.new(dir).format!
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,64 @@
1
+ class Terraspace::CLI::Fmt
2
+ class Runner
3
+ include Terraspace::CLI::Concerns::SourceDirs
4
+ include Terraspace::Util::Logging
5
+ SKIP_PATTERN = /\.skip$/
6
+
7
+ def initialize(dir)
8
+ @dir = dir
9
+ end
10
+
11
+ def format!
12
+ logger.info @dir.color(:green)
13
+ Dir.chdir(@dir) do
14
+ skip_rename
15
+ begin
16
+ terraform_fmt
17
+ ensure
18
+ restore_rename
19
+ end
20
+ end
21
+ end
22
+
23
+ def skip_rename
24
+ tf_files.each do |path|
25
+ if !skip?(path) && erb?(path)
26
+ FileUtils.mv(path, "#{path}.skip")
27
+ end
28
+ end
29
+ end
30
+
31
+ def terraform_fmt
32
+ sh "terraform fmt"
33
+ end
34
+
35
+ def sh(command)
36
+ logger.debug("=> #{command}")
37
+ success = system(command)
38
+ return if success
39
+ logger.info "WARN: There were some errors running terraform fmt for files in #{@dir}:".color(:yellow)
40
+ logger.info "The errors are shown above"
41
+ end
42
+
43
+ def restore_rename
44
+ tf_files.each do |path|
45
+ if skip?(path) && erb?(path)
46
+ FileUtils.mv(path, path.sub(SKIP_PATTERN, '')) # original name
47
+ end
48
+ end
49
+ end
50
+
51
+ private
52
+ def skip?(path)
53
+ !!(path =~ SKIP_PATTERN)
54
+ end
55
+
56
+ def erb?(path)
57
+ IO.readlines(path).detect { |l| l.include?('<%') }
58
+ end
59
+
60
+ def tf_files
61
+ Dir.glob("#{Terraspace.root}/#{@dir}/**/*.{tf,skip}").select { |p| File.file?(p) }
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,10 @@
1
+ ## Example
2
+
3
+ $ terraspace fmt
4
+ Formating terraform files
5
+ app/modules/example
6
+ main.tf
7
+ outputs.tf
8
+ variables.tf
9
+ app/stacks/demo
10
+ main.tf
@@ -1,6 +1,6 @@
1
1
  ## Example
2
2
 
3
- $ terraspace cloud destroy demo
3
+ $ terraspace tfc destroy demo
4
4
  You are about to delete the workspace: demo-dev-us-west-2
5
5
  All variables, settings, run history, and state history will be removed.
6
6
  This cannot be undone.
@@ -1,6 +1,6 @@
1
1
  ## Example
2
2
 
3
- $ terraspace cloud list
3
+ $ terraspace tfc list
4
4
  Workspaces for boltops:
5
5
  demo-dev-us-west-2
6
6
  demo2-dev-us-west-2