terraspace 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/aws/bin/build.sh +2 -0
  3. data/.cody/azurerm/bin/build.sh +2 -0
  4. data/.cody/google/bin/build.sh +2 -0
  5. data/CHANGELOG.md +10 -0
  6. data/lib/terraspace.rb +1 -0
  7. data/lib/terraspace/all/summary.rb +21 -1
  8. data/lib/terraspace/cli.rb +25 -25
  9. data/lib/terraspace/cli/all.rb +9 -9
  10. data/lib/terraspace/cli/cloud.rb +3 -9
  11. data/lib/terraspace/cli/cloud/runs.rb +0 -2
  12. data/lib/terraspace/cli/help/all/down.md +32 -0
  13. data/lib/terraspace/cli/help/all/graph.md +21 -0
  14. data/lib/terraspace/cli/help/all/output.md +22 -0
  15. data/lib/terraspace/cli/help/all/plan.md +25 -0
  16. data/lib/terraspace/cli/help/all/providers.md +21 -0
  17. data/lib/terraspace/cli/help/all/refresh.md +17 -0
  18. data/lib/terraspace/cli/help/all/show.md +21 -0
  19. data/lib/terraspace/cli/help/all/up.md +27 -0
  20. data/lib/terraspace/cli/help/all/validate.md +21 -0
  21. data/lib/terraspace/cli/help/build.md +6 -0
  22. data/lib/terraspace/cli/help/bundle.md +9 -5
  23. data/lib/terraspace/cli/help/check_setup.md +9 -0
  24. data/lib/terraspace/cli/help/clean.md +5 -0
  25. data/lib/terraspace/cli/help/cloud/destroy.md +16 -0
  26. data/lib/terraspace/cli/help/cloud/list.md +7 -0
  27. data/lib/terraspace/cli/help/cloud/runs/list.md +3 -3
  28. data/lib/terraspace/cli/help/cloud/runs/prune.md +1 -1
  29. data/lib/terraspace/cli/help/cloud/sync.md +26 -2
  30. data/lib/terraspace/cli/help/console.md +8 -0
  31. data/lib/terraspace/cli/help/down.md +26 -0
  32. data/lib/terraspace/cli/help/info.md +43 -0
  33. data/lib/terraspace/cli/help/init.md +37 -0
  34. data/lib/terraspace/cli/help/list.md +20 -0
  35. data/lib/terraspace/cli/help/log.md +2 -0
  36. data/lib/terraspace/cli/help/logs/remove.md +5 -0
  37. data/lib/terraspace/cli/help/logs/truncate.md +5 -0
  38. data/lib/terraspace/cli/help/new/bootstrap_test.md +8 -0
  39. data/lib/terraspace/cli/help/new/example.md +8 -0
  40. data/lib/terraspace/cli/help/new/git_hook.md +6 -0
  41. data/lib/terraspace/cli/help/new/module.md +9 -0
  42. data/lib/terraspace/cli/help/new/module_test.md +12 -0
  43. data/lib/terraspace/cli/help/new/plugin.md +49 -0
  44. data/lib/terraspace/cli/help/new/project.md +40 -0
  45. data/lib/terraspace/cli/help/new/project_test.md +8 -0
  46. data/lib/terraspace/cli/help/new/shim.md +21 -0
  47. data/lib/terraspace/cli/help/new/stack.md +9 -0
  48. data/lib/terraspace/cli/help/output.md +6 -0
  49. data/lib/terraspace/cli/help/plan.md +29 -0
  50. data/lib/terraspace/cli/help/providers.md +18 -0
  51. data/lib/terraspace/cli/help/refresh.md +11 -0
  52. data/lib/terraspace/cli/help/seed.md +7 -0
  53. data/lib/terraspace/cli/help/show.md +36 -0
  54. data/lib/terraspace/cli/help/summary.md +11 -0
  55. data/lib/terraspace/cli/help/test.md +35 -0
  56. data/lib/terraspace/cli/help/up.md +30 -0
  57. data/lib/terraspace/cli/help/validate.md +9 -0
  58. data/lib/terraspace/cli/info.rb +4 -16
  59. data/lib/terraspace/cli/logs.rb +1 -1
  60. data/lib/terraspace/cli/new.rb +18 -18
  61. data/lib/terraspace/cli/new/git_hook.rb +4 -1
  62. data/lib/terraspace/cli/new/project.rb +1 -1
  63. data/lib/terraspace/cli/summary.rb +2 -2
  64. data/lib/terraspace/command.rb +1 -1
  65. data/lib/terraspace/dependency/graph.rb +2 -1
  66. data/lib/terraspace/plugin/summary/interface.rb +1 -1
  67. data/lib/terraspace/shell.rb +14 -4
  68. data/lib/terraspace/terraform/cloud/runs/lister.rb +0 -2
  69. data/lib/terraspace/terraform/cloud/syncer.rb +2 -2
  70. data/lib/terraspace/terraform/cloud/workspace.rb +0 -9
  71. data/lib/terraspace/version.rb +1 -1
  72. data/spec/terraspace/all/summary_spec.rb +1 -1
  73. metadata +43 -3
  74. data/lib/terraspace/cli/help/update.md +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4501185815eeebafbdadd49e8afac52af4fc1c6b8d6d297269614482a38df47
4
- data.tar.gz: b532e32f8c4a2a34e14b528649ff313041610adb7fc89349f7f97336a4c767d0
3
+ metadata.gz: 82d3075dd4d1feefc14c645c634b80fca976887120ccf4e531385745e7d4df3e
4
+ data.tar.gz: e3c035ee09b574247d563e3261e4f51e7d93bc5a6bf5af4d3b0ab083864f25af
5
5
  SHA512:
6
- metadata.gz: b8e949cadb19e163b961bebc40cc8e31bfba8e6ccefb07e28cdabb88a6cf0696a7a8a62b7f4c5f73ab1ae420c9b1956f38d2916f65ad0bfae3ee4e64ba885de5
7
- data.tar.gz: 0f0ef1edc6432743dc6f3535449c880615057038a4e097ca03227660d7dd39270da8186675c26315f86636344635017d16f4c60fef580dfb6188bd0c785e92ab
6
+ metadata.gz: 384d8c9ff03eec838719ebe438dd9ad047558e0e4d495732f66561364b9100879bf498609bf931e29def28c5e4e3c0cb5ad4875cde4955a46dd63f850ec43887
7
+ data.tar.gz: f475ab2126fe8c7807c9811a2f9f734cc9c47c702c61daa7b3cd4c995a192aa5b3669cde26f92c57b0592adf0131f4dbc80b45e0641900bca2090162d4e7529b
@@ -10,4 +10,6 @@ export PATH=~/bin:$PATH # ~/bin/terraspace wrapper
10
10
  set -x
11
11
  terraspace new project infra --examples
12
12
  cd infra
13
+ terraspace new bootstrap_test
14
+ terraspace new project_test demo --examples
13
15
  terraspace test
@@ -17,4 +17,6 @@ export ARM_TENANT_ID=$(cat ~/.azure/app-client.json | jq -r '.tenant_id')
17
17
  set -x
18
18
  terraspace new project infra --examples --plugin azurerm
19
19
  cd infra
20
+ terraspace new bootstrap_test
21
+ terraspace new project_test demo --examples --plugin azurerm
20
22
  terraspace test
@@ -14,4 +14,6 @@ export GOOGLE_PROJECT=$(cat $GOOGLE_APPLICATION_CREDENTIALS | jq -r '.project_id
14
14
  set -x
15
15
  terraspace new project infra --examples --plugin google
16
16
  cd infra
17
+ terraspace new bootstrap_test
18
+ terraspace new project_test demo --examples --plugin google
17
19
  terraspace test
@@ -3,6 +3,16 @@
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.3.4]
7
+ * #42 update cli docs and bug fixes
8
+ * fix console by using system instead of popen3
9
+ * fix build for edge case when app/modules exist but app/stacks do not
10
+ * terraspace new project: do not generate spec folder by default
11
+ * improve all output summary
12
+ * remove redundant `terraspace cloud setup`, instead use: `terraspace cloud sync`
13
+ * improve terraspace info output
14
+ * fix integration test pipeline
15
+
6
16
  ## [0.3.3]
7
17
  * #41 fix `terraspace build` and `terraspace seed` when bucket doesnt exist yet and there are dependenices defined.
8
18
 
@@ -6,6 +6,7 @@ require "active_support/core_ext/class"
6
6
  require "active_support/core_ext/hash"
7
7
  require "active_support/core_ext/string"
8
8
  require "active_support/ordered_options"
9
+ require "cli-format"
9
10
  require "deep_merge/rails_compat"
10
11
  require "dsl_evaluator"
11
12
  require "fileutils"
@@ -51,7 +51,15 @@ module Terraspace::All
51
51
  end
52
52
 
53
53
  def output
54
- @lines # pass through all output info
54
+ if @lines.grep(/No outputs found/).empty?
55
+ @lines.select! do |line|
56
+ line.include?(" = ") # looks like output
57
+ end
58
+ else
59
+ @lines.select! do |line|
60
+ line.include?("No outputs found")
61
+ end
62
+ end
55
63
  end
56
64
 
57
65
  def show
@@ -65,6 +73,18 @@ module Terraspace::All
65
73
  @lines.unshift(summary) # add to top
66
74
  end
67
75
 
76
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]: => terraform providers
77
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]:
78
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]: Providers required by configuration:
79
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]: .
80
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]: └── provider[registry.terraform.io/hashicorp/random]
81
+ # [2020-09-19T19:36:33 #14387 terraspace providers c1]:
82
+ def providers
83
+ @lines.select! do |line|
84
+ line.include?("provider[")
85
+ end
86
+ end
87
+
68
88
  # [2020-09-07T14:53:36 #31106 terraspace show b1]: Outputs:
69
89
  # [2020-09-07T14:53:36 #31106 terraspace show b1]:
70
90
  # [2020-09-07T14:53:36 #31106 terraspace show b1]: length = 1
@@ -44,7 +44,7 @@ module Terraspace
44
44
  long_desc Help.text(:new)
45
45
  subcommand "new", New
46
46
 
47
- desc "build [STACK]", "build"
47
+ desc "build [STACK]", "Build project."
48
48
  long_desc Help.text(:build)
49
49
  option :quiet, type: :boolean, desc: "quiet output"
50
50
  instance_option.call
@@ -53,32 +53,32 @@ module Terraspace
53
53
  Terraspace::Builder.new(options.merge(mod: mod)).run # building any stack builds them all
54
54
  end
55
55
 
56
- desc "bundle", "bundle"
56
+ desc "bundle", "Bundle with Terrafile."
57
57
  long_desc Help.text(:bundle)
58
58
  def bundle(*args)
59
59
  Bundle.new(options.merge(args: args)).run
60
60
  end
61
61
 
62
- desc "check_setup", "check_setup"
62
+ desc "check_setup", "Check setup."
63
63
  long_desc Help.text(:check_setup)
64
64
  def check_setup
65
65
  CheckSetup.new(options).run
66
66
  end
67
67
 
68
- desc "clean", "clean .terraspace-cache dir"
68
+ desc "clean", "Removes .terraspace-cache dir."
69
69
  long_desc Help.text(:clean)
70
70
  def clean
71
71
  Clean.new(options).run
72
72
  end
73
73
 
74
- desc "console STACK", "console .terraspace-cache dir"
74
+ desc "console STACK", "Run console in built terraform project."
75
75
  long_desc Help.text(:console)
76
76
  instance_option.call
77
77
  def console(mod)
78
- Commander.new("console", options.merge(mod: mod)).run
78
+ Commander.new("console", options.merge(mod: mod, shell: "system")).run
79
79
  end
80
80
 
81
- desc "down STACK", "down"
81
+ desc "down STACK", "Destroy infrastructure stack."
82
82
  long_desc Help.text(:down)
83
83
  instance_option.call
84
84
  yes_option.call
@@ -88,29 +88,29 @@ module Terraspace
88
88
  Down.new(options.merge(mod: mod)).run
89
89
  end
90
90
 
91
- desc "info STACK", "info"
91
+ desc "info STACK", "Get info about stack."
92
92
  long_desc Help.text(:info)
93
- format_option.call
94
93
  instance_option.call
94
+ option :format, desc: "Output formats: #{CliFormat.formats.join(', ')}"
95
95
  def info(mod)
96
96
  Info.new(options.merge(mod: mod)).run
97
97
  end
98
98
 
99
- desc "init STACK", "init"
99
+ desc "init STACK", "Run init in built terraform project."
100
100
  long_desc Help.text(:init)
101
101
  instance_option.call
102
102
  def init(mod)
103
103
  Commander.new("init", options.merge(mod: mod, quiet: false)).run
104
104
  end
105
105
 
106
- desc "list", "list stacks and modules"
106
+ desc "list", "List stacks and modules."
107
107
  long_desc Help.text(:list)
108
108
  option :type, aliases: %w[t], desc: "Type: stack or module. Default all"
109
109
  def list
110
110
  List.new(options).run
111
111
  end
112
112
 
113
- desc "log [ACTION] [STACK]", "The log command allows you to view multiple logs."
113
+ desc "log [ACTION] [STACK]", "View and tail logs."
114
114
  long_desc Help.text("log")
115
115
  option :timestamps, aliases: %w[t], type: :boolean, desc: "Whether or not to show the leading timestamp. Defaults to timestamps for multiple logs, and no timestamp if a single log is specified. Note: In follow mode, timestamp always shown"
116
116
  option :follow, aliases: %w[f], type: :boolean, desc: "Follow the log in live tail fashion. Must specify a stack if using this option."
@@ -120,7 +120,7 @@ module Terraspace
120
120
  Log.new(@options.merge(action: action, stack: stack)).run
121
121
  end
122
122
 
123
- desc "plan STACK", "plan stack"
123
+ desc "plan STACK", "Plan stack."
124
124
  long_desc Help.text(:plan)
125
125
  auto_option.call
126
126
  input_option.call
@@ -131,21 +131,21 @@ module Terraspace
131
131
  Commander.new("plan", options.merge(mod: mod)).run
132
132
  end
133
133
 
134
- desc "providers STACK", "providers"
134
+ desc "providers STACK", "Show providers."
135
135
  long_desc Help.text(:providers)
136
136
  instance_option.call
137
137
  def providers(mod)
138
138
  Commander.new("providers", options.merge(mod: mod)).run
139
139
  end
140
140
 
141
- desc "refresh STACK", "refresh"
141
+ desc "refresh STACK", "Run refresh."
142
142
  long_desc Help.text(:refresh)
143
143
  instance_option.call
144
144
  def refresh(mod)
145
145
  Commander.new("refresh", options.merge(mod: mod)).run
146
146
  end
147
147
 
148
- desc "seed STACK", "seed"
148
+ desc "seed STACK", "Build starer seed tfvars file."
149
149
  long_desc Help.text(:seed)
150
150
  option :yes, aliases: :y, type: :boolean, desc: "bypass prompts and force overwrite files"
151
151
  option :where, desc: "where to create file. either under app or seed folder structure. values: app or stack"
@@ -155,8 +155,8 @@ module Terraspace
155
155
  Seed.new(options.merge(mod: mod)).run
156
156
  end
157
157
 
158
- desc "summary", "Summary of resources"
159
- long_desc Help.text(:clean)
158
+ desc "summary", "Summarize resources."
159
+ long_desc Help.text(:summary)
160
160
  option :mod, desc: "Module to build to generate a backend file for discovery. By default the last module is used. Usually, it wont matter."
161
161
  init_option.call
162
162
  option :short, aliases: %w[s], type: :boolean, desc: "Only show statefiles"
@@ -164,7 +164,7 @@ module Terraspace
164
164
  Summary.new(options).run
165
165
  end
166
166
 
167
- desc "show STACK", "show"
167
+ desc "show STACK", "Run show."
168
168
  long_desc Help.text(:show)
169
169
  instance_option.call
170
170
  option :plan, desc: "path to created.plan"
@@ -173,13 +173,13 @@ module Terraspace
173
173
  Commander.new("show", options.merge(mod: mod)).run
174
174
  end
175
175
 
176
- desc "test", "test"
176
+ desc "test", "Run test."
177
177
  long_desc Help.text(:test)
178
178
  def test
179
179
  Test.new(options).run
180
180
  end
181
181
 
182
- desc "output STACK", "output"
182
+ desc "output STACK", "Run output."
183
183
  long_desc Help.text(:output)
184
184
  format_option.call
185
185
  instance_option.call
@@ -188,8 +188,8 @@ module Terraspace
188
188
  Commander.new("output", options.merge(mod: mod)).run
189
189
  end
190
190
 
191
- desc "up STACK", "Deploy infrastructure. IE: terraform apply"
192
- long_desc Help.text(:update)
191
+ desc "up STACK", "Deploy infrastructure stack."
192
+ long_desc Help.text(:up)
193
193
  auto_option.call
194
194
  init_option.call
195
195
  input_option.call
@@ -202,7 +202,7 @@ module Terraspace
202
202
  Up.new(options.merge(mod: mod)).run
203
203
  end
204
204
 
205
- desc "validate STACK", "validate"
205
+ desc "validate STACK", "Validate stack."
206
206
  long_desc Help.text(:validate)
207
207
  instance_option.call
208
208
  def validate(mod)
@@ -221,7 +221,7 @@ module Terraspace
221
221
  Completer::Script.generate
222
222
  end
223
223
 
224
- desc "version", "prints version"
224
+ desc "version", "Prints version."
225
225
  def version
226
226
  puts VERSION
227
227
  end
@@ -3,14 +3,14 @@ class Terraspace::CLI
3
3
  class_option :yes, aliases: :y, type: :boolean, desc: "auto approve all batch commands"
4
4
  class_option :exit_on_fail, type: :boolean, desc: "whether or not to exit when one of the batch commands fails"
5
5
 
6
- desc "down", "destroy all"
6
+ desc "down", "Destroy all or multiple stacks."
7
7
  long_desc Help.text("all/down")
8
8
  option :destroy_workspace, type: :boolean, desc: "Also destroy the Cloud workspace. Only applies when using Terraform Cloud remote backend."
9
9
  def down(*stacks)
10
10
  Terraspace::All::Runner.new("down", @options.merge(stacks: stacks)).run
11
11
  end
12
12
 
13
- desc "graph", "graph all"
13
+ desc "graph", "Draw a dependency graph."
14
14
  long_desc Help.text("all/graph")
15
15
  option :format, default: "png", desc: "format: text or diagram"
16
16
  option :full,type: :boolean, desc: "draw the full graph with highlighted nodes or draw the subgraph. text format defaults to false, graph format defaults to true"
@@ -18,43 +18,43 @@ class Terraspace::CLI
18
18
  Terraspace::All::Grapher.new(@options.merge(stacks: stacks)).run
19
19
  end
20
20
 
21
- desc "refresh", "refresh all"
21
+ desc "refresh", "Refresh all or multiple stacks."
22
22
  long_desc Help.text("all/refresh")
23
23
  def refresh(*stacks)
24
24
  Terraspace::All::Runner.new("refresh", @options.merge(stacks: stacks)).run
25
25
  end
26
26
 
27
- desc "output", "output all"
27
+ desc "output", "Show output for all or multiple stacks."
28
28
  long_desc Help.text("all/output")
29
29
  def output(*stacks)
30
30
  Terraspace::All::Runner.new("output", @options.merge(stacks: stacks)).run
31
31
  end
32
32
 
33
- desc "plan", "plan all"
33
+ desc "plan", "Run plan for all or multiple stacks."
34
34
  long_desc Help.text("all/plan")
35
35
  def plan(*stacks)
36
36
  Terraspace::All::Runner.new("plan", @options.merge(stacks: stacks)).run
37
37
  end
38
38
 
39
- desc "providers", "providers all"
39
+ desc "providers", "Show providers for all or multiple stacks."
40
40
  long_desc Help.text("all/providers")
41
41
  def providers(*stacks)
42
42
  Terraspace::All::Runner.new("providers", @options.merge(stacks: stacks)).run
43
43
  end
44
44
 
45
- desc "show", "show all"
45
+ desc "show", "Run show for all or multiple stacks."
46
46
  long_desc Help.text("all/show")
47
47
  def show(*stacks)
48
48
  Terraspace::All::Runner.new("show", @options.merge(stacks: stacks)).run
49
49
  end
50
50
 
51
- desc "up", "deploy all"
51
+ desc "up", "Deploy all or multiple stacks."
52
52
  long_desc Help.text("all/up")
53
53
  def up(*stacks)
54
54
  Terraspace::All::Runner.new("up", @options.merge(stacks: stacks)).run
55
55
  end
56
56
 
57
- desc "validate", "validate all"
57
+ desc "validate", "Validate all or multiple stacks."
58
58
  long_desc Help.text("all/validate")
59
59
  def validate(*stacks)
60
60
  Terraspace::All::Runner.new("validate", @options.merge(stacks: stacks)).run
@@ -20,17 +20,11 @@ class Terraspace::CLI
20
20
  Workspace.new(options.merge(mod: mod)).destroy
21
21
  end
22
22
 
23
- desc "setup STACK", "Setup workspace"
24
- long_desc Help.text("cloud:setup")
25
- def setup(mod)
26
- Workspace.new(options.merge(mod: mod)).setup
27
- end
28
-
29
- desc "sync [STACK]", "sync workspace"
23
+ desc "sync [STACK]", "Sync all or multiple workspaces."
30
24
  long_desc Help.text("cloud:sync")
31
25
  yes_option.call
32
- def sync(mod=nil)
33
- Syncer.new(options.merge(mod: mod, override_auto_sync: true)).run
26
+ def sync(*stacks)
27
+ Syncer.new(options.merge(stacks: stacks, override_auto_sync: true)).run
34
28
  end
35
29
 
36
30
  desc "runs SUBCOMMAND", "runs subcommands"
@@ -1,5 +1,3 @@
1
- require 'cli-format'
2
-
3
1
  class Terraspace::CLI::Cloud
4
2
  class Runs < Terraspace::Command
5
3
  Help = Terraspace::CLI::Help
@@ -0,0 +1,32 @@
1
+ ## Example
2
+
3
+ $ terraspace all down
4
+ Will run:
5
+ terraspace down a1 # batch 1
6
+ terraspace down b1 # batch 2
7
+ terraspace down b2 # batch 2
8
+ terraspace down c1 # batch 3
9
+ Are you sure? (y/N)
10
+
11
+ Once you confirm, Terraspace destroys the infrastructure.
12
+
13
+ Are you sure? (y/N) y
14
+ Batch Run 1:
15
+ Running: terraspace down a1 Logs: log/down/a1.log
16
+ terraspace down a1: Changes to Outputs:
17
+ terraspace down a1: Destroy complete! Resources: 2 destroyed.
18
+ Batch Run 2:
19
+ Running: terraspace down b1 Logs: log/down/b1.log
20
+ Running: terraspace down b2 Logs: log/down/b2.log
21
+ terraspace down b1: Changes to Outputs:
22
+ terraspace down b1: Destroy complete! Resources: 2 destroyed.
23
+ terraspace down b2: Changes to Outputs:
24
+ terraspace down b2: Destroy complete! Resources: 1 destroyed.
25
+ Batch Run 3:
26
+ Running: terraspace down c1 Logs: log/down/c1.log
27
+ terraspace down c1: Changes to Outputs:
28
+ terraspace down c1: Destroy complete! Resources: 1 destroyed.
29
+ Time took: 15s
30
+ $
31
+
32
+ Terraspace provides a reduced-noise summary of the runs. The full logs are also written for further inspection and debugging. The [terraspace log](https://terraspace.cloud/reference/terraspace-log/) command is useful for viewing the logs.
@@ -0,0 +1,21 @@
1
+ ## Example
2
+
3
+ $ terraspace all graph
4
+ Building graph...
5
+ Graph saved to .terraspace-cache/graph/dependencies-20200919192103.png
6
+ $
7
+
8
+ The graph will auto-open on macosx and cloud9.
9
+
10
+ ![](https://img.boltops.com/boltops/tools/terraspace/graphs/example-a1.png)
11
+
12
+ ## Text Form
13
+
14
+ You can also generate a graph in text, tree-like form
15
+
16
+ $ terraspace all graph --format text
17
+ a1
18
+ ├── b2
19
+ │ └── c1
20
+ └── b1
21
+ └── c1
@@ -0,0 +1,22 @@
1
+ ## Example
2
+
3
+ $ terraspace all output
4
+ Running:
5
+ terraspace output c1 # batch 1
6
+ terraspace output b1 # batch 2
7
+ terraspace output b2 # batch 2
8
+ terraspace output a1 # batch 3
9
+ Batch Run 1:
10
+ Running: terraspace output c1 Logs: log/output/c1.log
11
+ terraspace output c1: length = 1
12
+ Batch Run 2:
13
+ Running: terraspace output b1 Logs: log/output/b1.log
14
+ Running: terraspace output b2 Logs: log/output/b2.log
15
+ terraspace output b1: length = 1
16
+ terraspace output b1: length2 = 1
17
+ terraspace output b2: length = 1
18
+ Batch Run 3:
19
+ Running: terraspace output a1 Logs: log/output/a1.log
20
+ terraspace output a1: Warning: No outputs found
21
+ Time took: 12s
22
+ $