terraspace 0.6.13 → 0.6.15

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: 5ac77946fdc6f6073084fd5a862f38676d9c37ed661941cc877c3445e338ff0e
4
- data.tar.gz: fb5315dc9d3c37bf6d6a10206019b5de9c53be812ff3955161ca344fe7b12ac3
3
+ metadata.gz: 9980c8cd350d2b3c724d4dd3ff46a6388ee9c558377315e7320a35617c9810c6
4
+ data.tar.gz: 3bb3f797da63bf403cf8868ddb516cc8411cd3e92d16895876adbf06444dfab4
5
5
  SHA512:
6
- metadata.gz: edb6864335554ada73820a9700bb4e5b5c04ce5ebc2c4e68a54fb44d336fef33b705c78b90da8083bc48eaafae2ad5427a74f856d7b60ca558f1fe56965a6799
7
- data.tar.gz: 97656cb6d7eba975df38388468b0e69168d777a9e3de91268ecfafe9b8430121d54af96aee4df72834a28425f7919a3741b833f9dca0cb45363f451b4802069a
6
+ metadata.gz: 8da2856e9d86af65f0256a90cb4b675b17b48288ed3e752383ece1f0d90e7e1d9c044ecae8727403a698aed1bdac1578a52e25b5f481b63c4057d5e5cf357ac9
7
+ data.tar.gz: 78dd758735d162b8aaacc5d0840853d82a3d08a134e9707bf73cc7cf7918bcb078ea565a0c8ed1893f48699dcfc21c0cf5d7f240f8b6564ba61ab4ffc759831d
data/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
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.15] - 2021-10-01
7
+ - [#140](https://github.com/boltops-tools/terraspace/pull/140) fix terraspace output and Enter a value handling
8
+
9
+ ## [0.6.14] - 2021-09-30
10
+ - [#134](https://github.com/boltops-tools/terraspace/pull/134) Use file not plan for the var-files argument
11
+ - [#139](https://github.com/boltops-tools/terraspace/pull/139) Fix terraspace output to not add extra newlines
12
+ - terraspace list: change default to show both stacks and modules
13
+
6
14
  ## [0.6.13] - 2021-08-10
7
15
  - use terraspace-bundler 0.4.0
8
16
 
@@ -28,7 +28,7 @@ module Terraspace
28
28
  option :reconfigure, type: :boolean, desc: "Add terraform -reconfigure option"
29
29
  }
30
30
  type_option = Proc.new {
31
- option :type, default: "stack", aliases: %w[t], desc: "Type: stack, module, or all"
31
+ option :type, default: "all", aliases: %w[t], desc: "Type: stack, module, or all"
32
32
  }
33
33
 
34
34
  desc "all SUBCOMMAND", "all subcommands"
@@ -20,8 +20,12 @@ module Terraspace
20
20
  # Used to allow terraform output to always go to stdout
21
21
  # Terraspace output goes to stderr by default
22
22
  # See: terraspace/shell.rb
23
- def stdout(msg)
24
- puts msg
23
+ def stdout(msg, newline: true)
24
+ if newline
25
+ puts msg
26
+ else
27
+ print msg
28
+ end
25
29
  end
26
30
  end
27
31
  end
@@ -20,13 +20,18 @@ module Terraspace
20
20
  def shell
21
21
  env = @options[:env] || {}
22
22
  env.stringify_keys!
23
- if @options[:shell] == "system" # terraspace console
23
+ if system?
24
24
  system(env, @command, chdir: @mod.cache_dir)
25
25
  else
26
26
  popen3(env)
27
27
  end
28
28
  end
29
29
 
30
+ def system?
31
+ @options[:shell] == "system" || # terraspace console
32
+ ENV['TS_RUNNER_SYSTEM'] # allow manual override
33
+ end
34
+
30
35
  def popen3(env)
31
36
  Open3.popen3(env, @command, chdir: @mod.cache_dir) do |stdin, stdout, stderr, wait_thread|
32
37
  handle_streams(stdin, stdout, stderr)
@@ -54,7 +59,7 @@ module Terraspace
54
59
  lines = buffer.split("\n")
55
60
  lines.each do |line|
56
61
  if f.fileno == stdout.fileno
57
- handle_stdout(line)
62
+ handle_stdout(line, newline: !suppress_newline(line))
58
63
  handle_input(stdin, line)
59
64
  else
60
65
  handle_stderr(line)
@@ -62,9 +67,15 @@ module Terraspace
62
67
  end
63
68
  end
64
69
  end
70
+ handle_stdout("\n") # final newline at the end is exactly system behavior
65
71
  end
66
72
  end
67
73
 
74
+ def suppress_newline(line)
75
+ line.size == 8192 && line[-1] != "\n" || # when buffer is very large buffer.split("\n") only gives 8192 chars at a time
76
+ line.include?("Enter a value:") # prompt
77
+ end
78
+
68
79
  def handle_stderr(line)
69
80
  @error ||= Error.new
70
81
  @error.lines << line # aggregate all error lines
@@ -81,19 +92,14 @@ module Terraspace
81
92
  files.find { |f| !f.eof }.nil?
82
93
  end
83
94
 
84
- # Terraform doesnt seem to stream the line that prompts with "Enter a value:" when using Open3.popen3
85
- # Hack around it by mimicking the "Enter a value:" prompt
86
- #
87
- # Note: system does stream the prompt but using Open3.popen3 so we can capture output to save to logs.
88
95
  def handle_input(stdin, line)
89
- # stdout doesnt seem to flush and show "Enter a value: " look for earlier output
90
96
  patterns = [
91
- "Only 'yes' will be accepted", # prompt for apply. can happen on apply
97
+ "Enter a value:",
92
98
  "\e[0m\e[1mvar.", # prompts for variable input. can happen on plan or apply. looking for bold marker also in case "var." shows up somewhere else
93
99
  ]
94
100
  if patterns.any? { |pattern| line.include?(pattern) }
95
- print "\n Enter a value: ".bright
96
- stdin.write_nonblock($stdin.gets)
101
+ answer = $stdin.gets
102
+ stdin.write_nonblock(answer)
97
103
  end
98
104
  end
99
105
 
@@ -109,16 +115,12 @@ module Terraspace
109
115
  end
110
116
  end
111
117
 
112
- def handle_stdout(line)
113
- prompted = line.include?('Enter a value')
114
- @prompt_shown ||= prompted
115
- return if @prompt_shown && prompted
116
-
118
+ def handle_stdout(line, newline: true)
117
119
  # Terraspace logger has special stdout method so original terraform output
118
120
  # can be piped to jq. IE:
119
121
  # terraspace show demo --json | jq
120
122
  if logger.respond_to?(:stdout) && !@options[:log_to_stderr]
121
- logger.stdout(line)
123
+ logger.stdout(line, newline: newline)
122
124
  else
123
125
  logger.info(line)
124
126
  end
@@ -40,7 +40,7 @@ module Terraspace::Terraform::Args
40
40
  var_files = @options[:var_files]
41
41
  if var_files
42
42
  var_files.each do |file|
43
- copy_to_cache(plan)
43
+ copy_to_cache(file)
44
44
  end
45
45
  args << var_files.map { |f| "-var-file #{f}" }.join(' ')
46
46
  end
@@ -1,3 +1,3 @@
1
1
  module Terraspace
2
- VERSION = "0.6.13"
2
+ VERSION = "0.6.15"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.13
4
+ version: 0.6.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-10 00:00:00.000000000 Z
11
+ date: 2021-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -849,7 +849,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
849
849
  - !ruby/object:Gem::Version
850
850
  version: '0'
851
851
  requirements: []
852
- rubygems_version: 3.2.5
852
+ rubygems_version: 3.1.6
853
853
  signing_key:
854
854
  specification_version: 4
855
855
  summary: 'Terraspace: The Terraspace Framework'