terraspace 0.6.18 → 0.6.19
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/terraspace/cli/clean/logs.rb +1 -1
- data/lib/terraspace/cli/help/bundle.md +6 -0
- data/lib/terraspace/cli/help/init.md +1 -1
- data/lib/terraspace/compiler/strategy/mod/tfvars.rb +4 -0
- data/lib/terraspace/compiler/strategy/mod.rb +10 -1
- data/lib/terraspace/shell.rb +43 -24
- data/lib/terraspace/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2fc510d1165404c449bcc9e3fe0af371d979aa5babc28e8531097f3ccd50c6eb
|
|
4
|
+
data.tar.gz: 95a69d72a293c58ff9435a162dbb20383dc8ee6dea8e681a5b8ab672cf90bbd2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c143d467df63cffe80862bec7ed0d06bc6edec50485b8a885d04a19f9f8d5a7a699dd494ff4daf074e303b50a1fc0f788340e6cd00bb42c875c834a05262b864
|
|
7
|
+
data.tar.gz: 90e43491736d1f3e43081d51bd9b0100a1641a3aaed71bac5eff71492a19298d0e56da762f79c07ff679e420509ce37e638974a643cc0633cde581c860e051fb
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
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.19] - 2021-11-24
|
|
7
|
+
- [#149](https://github.com/boltops-tools/terraspace/pull/149) change default fallback mod strategy to Mod::Tf instead of Mod::Pass for ERB support
|
|
8
|
+
- [#152](https://github.com/boltops-tools/terraspace/pull/152) fix naming typo in cli help
|
|
9
|
+
- [#153](https://github.com/boltops-tools/terraspace/pull/153) only remove and create log dir if it exists
|
|
10
|
+
- [#155](https://github.com/boltops-tools/terraspace/pull/155) add terraspace bundle example cli help
|
|
11
|
+
- [#157](https://github.com/boltops-tools/terraspace/pull/157) handle edge case: Enter a value chopped off
|
|
12
|
+
- [#158](https://github.com/boltops-tools/terraspace/pull/158) use pass strategy for binary files
|
|
13
|
+
- [#159](https://github.com/boltops-tools/terraspace/pull/159) process terraform.tfvars file with erb, change default processing strategy back to pass
|
|
14
|
+
|
|
6
15
|
## [0.6.18] - 2021-10-28
|
|
7
16
|
- [#147](https://github.com/boltops-tools/terraspace/pull/147) improve error message output
|
|
8
17
|
- [#148](https://github.com/boltops-tools/terraspace/pull/148) Improve shim wrapper generator
|
|
@@ -4,7 +4,6 @@ class Terraspace::CLI::Clean
|
|
|
4
4
|
action = @options[:truncate] ? "truncate" : "remove"
|
|
5
5
|
are_you_sure?(action)
|
|
6
6
|
@options[:truncate] ? truncate : remove
|
|
7
|
-
logger.info "Logs #{action}d" # IE: Logs truncated or Logs removed
|
|
8
7
|
end
|
|
9
8
|
|
|
10
9
|
def truncate
|
|
@@ -14,6 +13,7 @@ class Terraspace::CLI::Clean
|
|
|
14
13
|
end
|
|
15
14
|
|
|
16
15
|
def remove
|
|
16
|
+
return unless File.exist?(log_root)
|
|
17
17
|
puts "Removing all files in #{pretty_log_root}/" unless @options[:mute]
|
|
18
18
|
FileUtils.rm_rf(log_root)
|
|
19
19
|
FileUtils.mkdir_p(log_root)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "open3"
|
|
2
|
+
|
|
1
3
|
module Terraspace::Compiler::Strategy
|
|
2
4
|
class Mod < AbstractBase
|
|
3
5
|
def run
|
|
@@ -9,8 +11,15 @@ module Terraspace::Compiler::Strategy
|
|
|
9
11
|
def strategy_class(path)
|
|
10
12
|
ext = File.extname(path).sub('.','')
|
|
11
13
|
return Mod::Pass if ext.empty? # infinite loop without this
|
|
12
|
-
return Mod::Pass if Terraspace.pass_file?(path)
|
|
14
|
+
return Mod::Pass if Terraspace.pass_file?(path) or !text_file?(path)
|
|
15
|
+
# Fallback to Mod::Tf for all other files. ERB useful for terraform.tfvars
|
|
13
16
|
"Terraspace::Compiler::Strategy::Mod::#{ext.camelize}".constantize rescue Mod::Pass
|
|
14
17
|
end
|
|
18
|
+
|
|
19
|
+
# Thanks: https://stackoverflow.com/questions/2355866/ruby-how-to-determine-if-file-being-read-is-binary-or-text
|
|
20
|
+
def text_file?(filename)
|
|
21
|
+
file_type, status = Open3.capture2e("file", filename)
|
|
22
|
+
status.success? && file_type.include?("text")
|
|
23
|
+
end
|
|
15
24
|
end
|
|
16
25
|
end
|
data/lib/terraspace/shell.rb
CHANGED
|
@@ -71,8 +71,49 @@ module Terraspace
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def suppress_newline(line)
|
|
74
|
-
|
|
75
|
-
line.include?("Enter a value:")
|
|
74
|
+
# Regular prompt
|
|
75
|
+
line.include?("Enter a value:") ||
|
|
76
|
+
# Edge case: When buffer is very large buffer.split("\n") only gives 8192 chars at a time
|
|
77
|
+
line.size == 8192 && line[-1] != "\n" ||
|
|
78
|
+
# Edge case: "value:" chopped off "Enter a" and "value" prompt
|
|
79
|
+
# Very hard to reproduce. Happens 1/5 times on terraspace up autoscaling example.
|
|
80
|
+
# Sometimes lines come in as:
|
|
81
|
+
# [...," Only 'yes' will be accepted to approve.", "", " \e[1mEnter a"]
|
|
82
|
+
# [" value:\e[0m \e[0m"]
|
|
83
|
+
line.match(/Enter a$/) || line.match(/^ value:/) # chopped off prompt
|
|
84
|
+
# line.include?(" value:") && lines.last.match(/Enter a$/) # chopped off prompt
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def handle_stdout(line, newline: true)
|
|
88
|
+
# Terraspace logger has special stdout method so original terraform output
|
|
89
|
+
# can be piped to jq. IE:
|
|
90
|
+
# terraspace show demo --json | jq
|
|
91
|
+
if logger.respond_to?(:stdout) && !@options[:log_to_stderr]
|
|
92
|
+
logger.stdout(line, newline: newline)
|
|
93
|
+
else
|
|
94
|
+
logger.info(line)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def handle_input(stdin, line)
|
|
99
|
+
# Edge case: "value:" chopped off "Enter a" and "value" prompt
|
|
100
|
+
# This means "Enter a value:" is not needed but leaving it for now
|
|
101
|
+
patterns = [
|
|
102
|
+
/^ value:/,
|
|
103
|
+
"Enter a value:",
|
|
104
|
+
"\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
|
|
105
|
+
]
|
|
106
|
+
matched = patterns.any? do |pattern|
|
|
107
|
+
if pattern.is_a?(String)
|
|
108
|
+
line.include?(pattern)
|
|
109
|
+
else # Regexp
|
|
110
|
+
line.match(pattern)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
if matched
|
|
114
|
+
answer = $stdin.gets
|
|
115
|
+
stdin.write_nonblock(answer)
|
|
116
|
+
end
|
|
76
117
|
end
|
|
77
118
|
|
|
78
119
|
def handle_stderr(line)
|
|
@@ -91,17 +132,6 @@ module Terraspace
|
|
|
91
132
|
files.find { |f| !f.eof }.nil?
|
|
92
133
|
end
|
|
93
134
|
|
|
94
|
-
def handle_input(stdin, line)
|
|
95
|
-
patterns = [
|
|
96
|
-
"Enter a value:",
|
|
97
|
-
"\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
|
|
98
|
-
]
|
|
99
|
-
if patterns.any? { |pattern| line.include?(pattern) }
|
|
100
|
-
answer = $stdin.gets
|
|
101
|
-
stdin.write_nonblock(answer)
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
135
|
def exit_status(status)
|
|
106
136
|
return if status == 0
|
|
107
137
|
|
|
@@ -113,16 +143,5 @@ module Terraspace
|
|
|
113
143
|
exit status
|
|
114
144
|
end
|
|
115
145
|
end
|
|
116
|
-
|
|
117
|
-
def handle_stdout(line, newline: true)
|
|
118
|
-
# Terraspace logger has special stdout method so original terraform output
|
|
119
|
-
# can be piped to jq. IE:
|
|
120
|
-
# terraspace show demo --json | jq
|
|
121
|
-
if logger.respond_to?(:stdout) && !@options[:log_to_stderr]
|
|
122
|
-
logger.stdout(line, newline: newline)
|
|
123
|
-
else
|
|
124
|
-
logger.info(line)
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
146
|
end
|
|
128
147
|
end
|
data/lib/terraspace/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.6.19
|
|
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-
|
|
11
|
+
date: 2021-11-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -615,6 +615,7 @@ files:
|
|
|
615
615
|
- lib/terraspace/compiler/strategy/mod/pass.rb
|
|
616
616
|
- lib/terraspace/compiler/strategy/mod/rb.rb
|
|
617
617
|
- lib/terraspace/compiler/strategy/mod/tf.rb
|
|
618
|
+
- lib/terraspace/compiler/strategy/mod/tfvars.rb
|
|
618
619
|
- lib/terraspace/compiler/strategy/tfvar.rb
|
|
619
620
|
- lib/terraspace/compiler/strategy/tfvar/base.rb
|
|
620
621
|
- lib/terraspace/compiler/strategy/tfvar/layer.rb
|