ruby-terraform 0.64.0 → 0.65.0.pre.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +102 -29
  3. data/README.md +29 -9
  4. data/Rakefile +60 -42
  5. data/bin/console +3 -3
  6. data/lib/ruby-terraform.rb +1 -1
  7. data/lib/ruby_terraform.rb +20 -55
  8. data/lib/ruby_terraform/command_line/builder.rb +55 -0
  9. data/lib/ruby_terraform/command_line/option/base.rb +24 -0
  10. data/lib/ruby_terraform/command_line/option/boolean.rb +16 -0
  11. data/lib/ruby_terraform/command_line/option/boolean_value.rb +29 -0
  12. data/lib/ruby_terraform/command_line/option/flag.rb +16 -0
  13. data/lib/ruby_terraform/command_line/option/standard.rb +40 -0
  14. data/lib/ruby_terraform/command_line/option/switch.rb +43 -0
  15. data/lib/ruby_terraform/command_line/options_factory.rb +79 -0
  16. data/lib/ruby_terraform/commands/apply.rb +18 -40
  17. data/lib/ruby_terraform/commands/base.rb +56 -20
  18. data/lib/ruby_terraform/commands/clean.rb +2 -2
  19. data/lib/ruby_terraform/commands/destroy.rb +17 -38
  20. data/lib/ruby_terraform/commands/format.rb +8 -20
  21. data/lib/ruby_terraform/commands/get.rb +11 -10
  22. data/lib/ruby_terraform/commands/import.rb +17 -36
  23. data/lib/ruby_terraform/commands/init.rb +12 -28
  24. data/lib/ruby_terraform/commands/output.rb +13 -21
  25. data/lib/ruby_terraform/commands/plan.rb +13 -36
  26. data/lib/ruby_terraform/commands/refresh.rb +13 -32
  27. data/lib/ruby_terraform/commands/remote_config.rb +9 -17
  28. data/lib/ruby_terraform/commands/show.rb +9 -16
  29. data/lib/ruby_terraform/commands/validate.rb +13 -29
  30. data/lib/ruby_terraform/commands/workspace.rb +14 -14
  31. data/lib/ruby_terraform/errors/execution_error.rb +1 -1
  32. data/lib/ruby_terraform/output.rb +15 -12
  33. data/lib/ruby_terraform/version.rb +1 -1
  34. metadata +105 -13
@@ -1,25 +1,18 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lino'
4
1
  require_relative 'base'
5
2
 
6
3
  module RubyTerraform
7
4
  module Commands
8
5
  class Show < Base
9
- def configure_command(builder, opts)
10
- path = opts[:path] || opts[:directory]
11
- json_format = opts[:json]
12
- no_color = opts[:no_color]
13
- module_depth = opts[:module_depth]
6
+ def switches
7
+ %w[-json -no-color -module-depth] + super
8
+ end
9
+
10
+ def sub_commands(_values)
11
+ 'show'
12
+ end
14
13
 
15
- builder
16
- .with_subcommand('show') do |sub|
17
- sub = sub.with_option('-module-depth', module_depth) if module_depth
18
- sub = sub.with_flag('-no-color') if no_color
19
- sub = sub.with_flag('-json') if json_format
20
- sub
21
- end
22
- .with_argument(path)
14
+ def arguments(values)
15
+ values[:path] || values[:directory]
23
16
  end
24
17
  end
25
18
  end
@@ -1,38 +1,22 @@
1
- require 'lino'
2
1
  require_relative 'base'
3
2
 
4
3
  module RubyTerraform
5
4
  module Commands
6
5
  class Validate < Base
7
- def configure_command(builder, opts)
8
- directory = opts[:directory]
9
- vars = opts[:vars] || {}
10
- var_file = opts[:var_file]
11
- var_files = opts[:var_files] || []
12
- state = opts[:state]
13
- check_variables = opts[:check_variables]
14
- no_color = opts[:no_color]
15
- json_format = opts[:json]
6
+ def switches
7
+ %w[-json -no-color -var -var-file -state -check-variables] + super
8
+ end
9
+
10
+ def sub_commands(_values)
11
+ 'validate'
12
+ end
13
+
14
+ def arguments(values)
15
+ values[:directory]
16
+ end
16
17
 
17
- builder
18
- .with_subcommand('validate') do |sub|
19
- vars.each do |key, value|
20
- var_value = value.is_a?(String) ? value : JSON.generate(value)
21
- sub = sub.with_option(
22
- '-var', "'#{key}=#{var_value}'", separator: ' ')
23
- end
24
- sub = sub.with_option('-var-file', var_file) if var_file
25
- var_files.each do |file|
26
- sub = sub.with_option('-var-file', file)
27
- end
28
- sub = sub.with_option('-state', state) if state
29
- sub = sub.with_option('-check-variables', check_variables) unless
30
- check_variables.nil?
31
- sub = sub.with_flag('-no-color') if no_color
32
- sub = sub.with_flag('-json') if json_format
33
- sub
34
- end
35
- .with_argument(directory)
18
+ def option_default_values(_opts)
19
+ { vars: {}, var_files: [] }
36
20
  end
37
21
  end
38
22
  end
@@ -1,24 +1,24 @@
1
- require 'lino'
2
1
  require_relative 'base'
3
2
 
4
3
  module RubyTerraform
5
4
  module Commands
6
5
  class Workspace < Base
7
- def configure_command(builder, opts)
8
- directory = opts[:directory] || nil
9
- operation = opts[:operation] || 'list'
10
- workspace = opts[:workspace] || nil
11
-
12
- builder = builder
13
- .with_subcommand('workspace')
14
- .with_subcommand(operation)
6
+ def sub_commands(values)
7
+ commands = ['workspace', values[:operation]]
8
+ if values[:workspace] && values[:operation] != 'list'
9
+ commands << values[:workspace]
10
+ else
11
+ commands
12
+ end
13
+ end
15
14
 
16
- builder = builder.with_subcommand(workspace) if
17
- workspace && operation != 'list'
18
- builder = builder.with_argument(directory)
15
+ def arguments(values)
16
+ values[:directory]
17
+ end
19
18
 
20
- builder
19
+ def option_default_values(_opts)
20
+ { directory: nil, operation: 'list', workspace: nil }
21
21
  end
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -3,4 +3,4 @@ module RubyTerraform
3
3
  class ExecutionError < StandardError
4
4
  end
5
5
  end
6
- end
6
+ end
@@ -1,20 +1,23 @@
1
1
  module RubyTerraform
2
2
  class Output
3
- def self.for(opts)
4
- name = opts[:name]
5
- backend_config = opts[:backend_config]
6
-
7
- source_directory = opts[:source_directory]
8
- work_directory = opts[:work_directory]
3
+ class << self
4
+ def for(opts)
5
+ Dir.chdir(create_config_directory(opts)) do
6
+ RubyTerraform.init(backend_config: opts[:backend_config])
7
+ RubyTerraform.output(name: opts[:name])
8
+ end
9
+ end
9
10
 
10
- configuration_directory = File.join(work_directory, source_directory)
11
+ private
11
12
 
12
- FileUtils.mkdir_p File.dirname(configuration_directory)
13
- FileUtils.cp_r source_directory, configuration_directory
13
+ def create_config_directory(opts)
14
+ source_directory = opts[:source_directory]
15
+ work_directory = opts[:work_directory]
14
16
 
15
- Dir.chdir(configuration_directory) do
16
- RubyTerraform.init(backend_config: backend_config)
17
- RubyTerraform.output(name: name)
17
+ configuration_directory = File.join(work_directory, source_directory)
18
+ FileUtils.mkdir_p File.dirname(configuration_directory)
19
+ FileUtils.cp_r source_directory, configuration_directory
20
+ configuration_directory
18
21
  end
19
22
  end
20
23
  end
@@ -1,3 +1,3 @@
1
1
  module RubyTerraform
2
- VERSION = "0.64.0"
2
+ VERSION = '0.65.0.pre.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.64.0
4
+ version: 0.65.0.pre.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-02 00:00:00.000000000 Z
11
+ date: 2021-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lino
@@ -38,6 +38,62 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.17'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.17'
55
+ - !ruby/object:Gem::Dependency
56
+ name: gem-release
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.16'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.16'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.7'
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: rake
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -81,33 +137,33 @@ dependencies:
81
137
  - !ruby/object:Gem::Version
82
138
  version: '0.5'
83
139
  - !ruby/object:Gem::Dependency
84
- name: rake_ssh
140
+ name: rake_gpg
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - "~>"
88
144
  - !ruby/object:Gem::Version
89
- version: '0.4'
145
+ version: '0.12'
90
146
  type: :development
91
147
  prerelease: false
92
148
  version_requirements: !ruby/object:Gem::Requirement
93
149
  requirements:
94
150
  - - "~>"
95
151
  - !ruby/object:Gem::Version
96
- version: '0.4'
152
+ version: '0.12'
97
153
  - !ruby/object:Gem::Dependency
98
- name: rake_gpg
154
+ name: rake_ssh
99
155
  requirement: !ruby/object:Gem::Requirement
100
156
  requirements:
101
157
  - - "~>"
102
158
  - !ruby/object:Gem::Version
103
- version: '0.12'
159
+ version: '0.4'
104
160
  type: :development
105
161
  prerelease: false
106
162
  version_requirements: !ruby/object:Gem::Requirement
107
163
  requirements:
108
164
  - - "~>"
109
165
  - !ruby/object:Gem::Version
110
- version: '0.12'
166
+ version: '0.4'
111
167
  - !ruby/object:Gem::Dependency
112
168
  name: rspec
113
169
  requirement: !ruby/object:Gem::Requirement
@@ -123,19 +179,47 @@ dependencies:
123
179
  - !ruby/object:Gem::Version
124
180
  version: '3.9'
125
181
  - !ruby/object:Gem::Dependency
126
- name: gem-release
182
+ name: rubocop
127
183
  requirement: !ruby/object:Gem::Requirement
128
184
  requirements:
129
185
  - - "~>"
130
186
  - !ruby/object:Gem::Version
131
- version: '2.1'
187
+ version: '1.12'
132
188
  type: :development
133
189
  prerelease: false
134
190
  version_requirements: !ruby/object:Gem::Requirement
135
191
  requirements:
136
192
  - - "~>"
137
193
  - !ruby/object:Gem::Version
138
- version: '2.1'
194
+ version: '1.12'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-rspec
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '2.2'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.2'
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.21'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.21'
139
223
  description: Wraps the Terraform CLI so that Terraform can be invoked from a Ruby
140
224
  script or Rakefile.
141
225
  email:
@@ -154,6 +238,14 @@ files:
154
238
  - bin/setup
155
239
  - lib/ruby-terraform.rb
156
240
  - lib/ruby_terraform.rb
241
+ - lib/ruby_terraform/command_line/builder.rb
242
+ - lib/ruby_terraform/command_line/option/base.rb
243
+ - lib/ruby_terraform/command_line/option/boolean.rb
244
+ - lib/ruby_terraform/command_line/option/boolean_value.rb
245
+ - lib/ruby_terraform/command_line/option/flag.rb
246
+ - lib/ruby_terraform/command_line/option/standard.rb
247
+ - lib/ruby_terraform/command_line/option/switch.rb
248
+ - lib/ruby_terraform/command_line/options_factory.rb
157
249
  - lib/ruby_terraform/commands.rb
158
250
  - lib/ruby_terraform/commands/apply.rb
159
251
  - lib/ruby_terraform/commands/base.rb
@@ -189,9 +281,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
281
  version: '2.6'
190
282
  required_rubygems_version: !ruby/object:Gem::Requirement
191
283
  requirements:
192
- - - ">="
284
+ - - ">"
193
285
  - !ruby/object:Gem::Version
194
- version: '0'
286
+ version: 1.3.1
195
287
  requirements: []
196
288
  rubygems_version: 3.0.1
197
289
  signing_key: