ruby-terraform 1.8.0.pre.7 → 1.8.0.pre.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36fc9d207f09fd5b4f339dc3457ba9c6fe8e6a62fa378402737e50818011356d
4
- data.tar.gz: e02c7b49ad9c7dc67340b783ccfe0ed2c7069a04f992d62d432d3a78386a42c8
3
+ metadata.gz: 908fc48e01d74bb56dfb1f87a6c644745e6e2cb20fc54e12b1d7a6b1faf6c246
4
+ data.tar.gz: 93f6b5277831d620241132bed8ace26fb817fa1ee7d65f4b44b915de3f7c334d
5
5
  SHA512:
6
- metadata.gz: 909dc06efb67d6d83ca2f1e4b26445d80beb3b8af6f8ec52ac9abb5391344ab21e2248237b97bfaa6e45ef23f850a0a670d6f11e773dbffcbf06047a7a0df8cf
7
- data.tar.gz: b832fd4404b1f34e4377569c740d7a451040064160f4d440599f087aee8316f0a4cc4a416a1c70540bcade21cae362161bc8f4ad7fc8446280d21f6916ae7f19
6
+ metadata.gz: 1cac9d3ce236f366ca205e24fd7706866278d04af7dd8b281d887848a0b0a8d1535756045fb45753e572d9c9999a6105f7f54cb888e94a683dbc4840f49fe34b
7
+ data.tar.gz: d4eb8e29739ac35a4a75de7ebbf18ca36f321965676be132e5cf51a9e3548d7aa19263c682ce0c8affba89b74900bef847650858af71652e84438cfae86d6d42
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-terraform (1.8.0.pre.7)
4
+ ruby-terraform (1.8.0.pre.8)
5
5
  immutable-struct (~> 2.4)
6
- lino (= 3.2.0.pre.7)
6
+ lino (= 3.2.0.pre.9)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -31,7 +31,7 @@ GEM
31
31
  diff-lcs (1.5.1)
32
32
  docile (1.4.0)
33
33
  drb (2.2.1)
34
- excon (0.110.0)
34
+ excon (0.111.0)
35
35
  faker (3.4.1)
36
36
  i18n (>= 1.8.11, < 2)
37
37
  faraday (2.10.0)
@@ -66,7 +66,7 @@ GEM
66
66
  immutable-struct (2.4.1)
67
67
  json (2.7.2)
68
68
  language_server-protocol (3.17.0.3)
69
- lino (3.2.0.pre.7)
69
+ lino (3.2.0.pre.9)
70
70
  childprocess (~> 5.0.0)
71
71
  hamster (~> 3.0)
72
72
  open4 (~> 1.3)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'lino'
4
+ require 'tempfile'
4
5
 
5
6
  require_relative '../errors'
6
7
 
@@ -12,12 +13,12 @@ module RubyTerraform
12
13
  # Constructs an instance of the command.
13
14
  #
14
15
  def initialize(opts = {})
15
- @binary = opts[:binary] || RubyTerraform.configuration.binary
16
- @logger = opts[:logger] || RubyTerraform.configuration.logger
16
+ @binary = opts[:binary] || RubyTerraform.configuration.binary
17
+ @logger = opts[:logger] || RubyTerraform.configuration.logger
17
18
  @options = opts[:options] || RubyTerraform.configuration.options
18
- @stdin = opts[:stdin] || RubyTerraform.configuration.stdin
19
- @stdout = opts[:stdout] || RubyTerraform.configuration.stdout
20
- @stderr = opts[:stderr] || RubyTerraform.configuration.stderr
19
+ @stdin = opts[:stdin] || RubyTerraform.configuration.stdin
20
+ @stdout = opts[:stdout] || RubyTerraform.configuration.stdout
21
+ @stderr = opts[:stderr] || RubyTerraform.configuration.stderr
21
22
  end
22
23
 
23
24
  # rubocop:enable Metrics/AbcSize
@@ -32,30 +33,24 @@ module RubyTerraform
32
33
  # @option invocation_options [Hash<String, String>] :environment A map
33
34
  # of environment variables to expose at command invocation time.
34
35
  def execute(parameters = {}, invocation_options = {})
36
+ parameters = resolve_parameters(parameters)
37
+ invocation_options = resolve_invocation_options(invocation_options)
38
+
35
39
  do_before(parameters)
36
- build_and_execute_command(parameters, invocation_options)
40
+ result = build_and_execute_command(parameters, invocation_options)
37
41
  do_after(parameters)
42
+
43
+ prepare_result(result, parameters, invocation_options)
38
44
  rescue Lino::Errors::ExecutionError
39
45
  message = "Failed while running '#{command_name}'."
40
46
  logger.error(message)
41
47
  raise Errors::ExecutionError, message
42
48
  end
43
49
 
44
- protected
50
+ private
45
51
 
46
52
  attr_reader :binary, :logger, :stdin, :stdout, :stderr
47
53
 
48
- def build_and_execute_command(parameters, invocation_options)
49
- command = build_command(parameters, invocation_options)
50
-
51
- logger.debug("Running '#{command}'.")
52
- command.execute(
53
- stdin:,
54
- stdout:,
55
- stderr:
56
- )
57
- end
58
-
59
54
  def command_name
60
55
  self.class.to_s.split('::')[-1].downcase
61
56
  end
@@ -64,11 +59,7 @@ module RubyTerraform
64
59
 
65
60
  def do_after(_parameters); end
66
61
 
67
- private
68
-
69
62
  def build_command(parameters, invocation_options)
70
- parameters = resolve_parameters(parameters)
71
-
72
63
  Lino::CommandLineBuilder
73
64
  .for_command(@binary)
74
65
  .with_environment_variables(invocation_options[:environment] || {})
@@ -80,10 +71,8 @@ module RubyTerraform
80
71
  .build
81
72
  end
82
73
 
83
- def resolve_parameters(parameters)
84
- parameter_defaults(parameters)
85
- .merge(parameters)
86
- .merge(parameter_overrides(parameters))
74
+ def process_result(result, _parameters, _invocation_options)
75
+ result
87
76
  end
88
77
 
89
78
  def parameter_defaults(_parameters)
@@ -94,6 +83,10 @@ module RubyTerraform
94
83
  {}
95
84
  end
96
85
 
86
+ def invocation_option_defaults(_invocation_options)
87
+ { capture: [], result: :processed }
88
+ end
89
+
97
90
  def subcommands
98
91
  []
99
92
  end
@@ -105,6 +98,59 @@ module RubyTerraform
105
98
  def arguments(_parameters)
106
99
  []
107
100
  end
101
+
102
+ def build_and_execute_command(parameters, invocation_options)
103
+ command = build_command(parameters, invocation_options)
104
+ stdout = resolve_stdout(invocation_options)
105
+ stderr = resolve_stderr(invocation_options)
106
+
107
+ logger.debug("Running '#{command}'.")
108
+ command.execute(stdin:, stdout:, stderr:)
109
+
110
+ process_streams(invocation_options, stdout, stderr)
111
+ end
112
+
113
+ def resolve_parameters(parameters)
114
+ parameter_defaults(parameters)
115
+ .merge(parameters)
116
+ .merge(parameter_overrides(parameters))
117
+ end
118
+
119
+ def resolve_invocation_options(invocation_options)
120
+ invocation_option_defaults(invocation_options)
121
+ .merge(invocation_options)
122
+ end
123
+
124
+ def resolve_stdout(invocation_options)
125
+ invocation_options[:capture].include?(:stdout) ? Tempfile.new : @stdout
126
+ end
127
+
128
+ def resolve_stderr(invocation_options)
129
+ invocation_options[:capture].include?(:stderr) ? Tempfile.new : @stderr
130
+ end
131
+
132
+ def process_streams(invocation_options, stdout, stderr)
133
+ cap = invocation_options[:capture]
134
+
135
+ return nil if cap == []
136
+
137
+ result = {}
138
+ result = add_contents_to_result(cap, result, :stdout, stdout, :output)
139
+ add_contents_to_result(cap, result, :stderr, stderr, :error)
140
+ end
141
+
142
+ def add_contents_to_result(capture, result, stream_name, stream, type)
143
+ return result unless capture.include?(stream_name)
144
+
145
+ stream.rewind
146
+ result.merge({ type => stream.read })
147
+ end
148
+
149
+ def prepare_result(result, parameters, invocation_options)
150
+ return result if invocation_options[:result] == :raw
151
+
152
+ process_result(result, parameters, invocation_options)
153
+ end
108
154
  end
109
155
  end
110
156
  end
@@ -42,8 +42,8 @@ module RubyTerraform
42
42
  include RubyTerraform::Options::Global
43
43
 
44
44
  # @!visibility private
45
- def stdout
46
- @stdout.respond_to?(:string) ? @stdout : (@stdout = StringIO.new)
45
+ def invocation_option_defaults(invocation_options)
46
+ super.merge(capture: [:stdout])
47
47
  end
48
48
 
49
49
  # @!visibility private
@@ -67,9 +67,8 @@ module RubyTerraform
67
67
  end
68
68
 
69
69
  # @!visibility private
70
- def do_after(parameters)
71
- result = stdout.string
72
- parameters[:name] ? result.chomp : result
70
+ def process_result(result, parameters, _invocation_options)
71
+ parameters[:name] ? result[:output].chomp : result[:output]
73
72
  end
74
73
  end
75
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyTerraform
4
- VERSION = '1.8.0.pre.7'
4
+ VERSION = '1.8.0.pre.8'
5
5
  end
@@ -1618,7 +1618,7 @@ module RubyTerraform
1618
1618
  @binary = 'terraform'
1619
1619
  @logger = default_logger
1620
1620
  @options = default_options
1621
- @stdin = ''
1621
+ @stdin = nil
1622
1622
  @stdout = $stdout
1623
1623
  @stderr = $stderr
1624
1624
  end
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
39
39
  spec.required_ruby_version = '>= 3.1'
40
40
 
41
41
  spec.add_dependency 'immutable-struct', '~> 2.4'
42
- spec.add_dependency 'lino', '3.2.0.pre.7'
42
+ spec.add_dependency 'lino', '3.2.0.pre.9'
43
43
 
44
44
  spec.add_development_dependency 'bundler'
45
45
  spec.add_development_dependency 'faker'
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: 1.8.0.pre.7
4
+ version: 1.8.0.pre.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-08 00:00:00.000000000 Z
11
+ date: 2024-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: immutable-struct
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.0.pre.7
33
+ version: 3.2.0.pre.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.0.pre.7
40
+ version: 3.2.0.pre.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement