terraspace 0.6.13 → 0.6.15

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.
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'