terraspace 1.1.2 → 1.1.6

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: 6ad5587827bc4c9dcbae4cd2a42904e69ccf930bfa1a04c7e65d753178ff94f7
4
- data.tar.gz: 122e5fb3135447e92bf12e7f5947ee665f5f77e024e6aea5499ad63a184eceea
3
+ metadata.gz: 1645fa9d7679907d214d87b276d1282f0ae0fba29f1a2fff4019c4324a61b9c4
4
+ data.tar.gz: 26e2f27c70bf1872fce821778a80d20e3923b1dbf8e56013c88ee3d0c66ff002
5
5
  SHA512:
6
- metadata.gz: 0b6a0f432037f072acad01d60efb86d6e06314cea7ff75556dfb0de4ec077fe2479b215867702c8c6a615358a17c4568f30cfcf4a45011233f03b9c595a258ec
7
- data.tar.gz: ed255135382340d2a44cd04f863f8fc9d8bb6562b413e04024a13f6e4bb31c2b19f837dbb7c05ee1220210ee4bf0bd6ce4a5d4e5628fb23eab61dd8a338c6b5b
6
+ metadata.gz: 9a512a5c8c7d9b30959a967023be912979c2f666d510f95094cf1c531c00b3d52c11bca88528e72e62842484fdfa82d22c62edffe86d11a6a8ec11126117baba
7
+ data.tar.gz: 9f88a7337013171c4944f4c8b86067ba1df3a9e009cedb773fac0199cd35a7828c535439848abc9addec41cf918b7df0152c2d0360255ec8381a7df9ff87c000
data/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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
+ ## [1.1.6] - 2022-02-21
7
+ - [#213](https://github.com/boltops-tools/terraspace/pull/213) ability to show layers for debugging
8
+
9
+ ## [1.1.5] - 2022-02-21
10
+ - [#212](https://github.com/boltops-tools/terraspace/pull/212) ability to show layers for debugging
11
+ - show layers for debugging with logger level debug and TS_SHOW_ALL_LAYERS=1
12
+ - stringify_keys layer friendly names map
13
+
14
+ ## [1.1.4] - 2022-02-21
15
+ - [#210](https://github.com/boltops-tools/terraspace/pull/210) write files without magic conversion, fixes #209
16
+ - cleanup argv and root
17
+ - write files without magic conversion, fixes #209
18
+
19
+ ## [1.1.3] - 2022-02-17
20
+ - [#207](https://github.com/boltops-tools/terraspace/pull/207) dont fork when all.concurrency = 1
21
+
6
22
  ## [1.1.2] - 2022-02-17
7
23
  - [#200](https://github.com/boltops-tools/terraspace/pull/200) fix terraspace typos
8
24
  - [#202](https://github.com/boltops-tools/terraspace/pull/202) Windows support: fix include_dir for windows
@@ -41,18 +41,27 @@ module Terraspace::All
41
41
  concurrency = Terraspace.config.all.concurrency
42
42
  batch.sort_by(&:name).each_slice(concurrency) do |slice|
43
43
  slice.each do |node|
44
- pid = fork do
45
- build_stack(node.name)
46
- run_terraspace(node.name)
44
+ if fork?
45
+ pid = fork do
46
+ deploy_stack(node)
47
+ end
48
+ @pids[pid] = node.name # store mod_name mapping
49
+ else
50
+ deploy_stack(node)
47
51
  end
48
- @pids[pid] = node.name # store mod_name mapping
49
52
  end
50
53
  end
54
+ return unless fork?
51
55
  wait_for_child_proccess
52
56
  summarize # also reports lower-level error info
53
57
  report_errors # reports finall errors and possibly exit
54
58
  end
55
59
 
60
+ def deploy_stack(node)
61
+ build_stack(node.name)
62
+ run_terraspace(node.name)
63
+ end
64
+
56
65
  def build_modules
57
66
  builder = Terraspace::Builder.new(@options.merge(mod: "placeholder", clean: true, quiet: true, include_stacks: :none))
58
67
  builder.build(modules: true)
@@ -109,7 +118,7 @@ module Terraspace::All
109
118
  end
110
119
 
111
120
  def run_terraspace(mod_name)
112
- set_log_path!(mod_name)
121
+ set_log_path!(mod_name) if fork?
113
122
  name = command_map(@command)
114
123
  o = @options.merge(mod: mod_name, yes: true, build: false, input: false, log_to_stderr: true)
115
124
  o.merge!(quiet: false) if @command == "init" # noisy so can filter and summarize output
@@ -123,6 +132,10 @@ module Terraspace::All
123
132
  end
124
133
  end
125
134
 
135
+ def fork?
136
+ Terraspace.config.all.concurrency > 1
137
+ end
138
+
126
139
  def set_log_path!(mod_name)
127
140
  command = terraspace_command(mod_name)
128
141
  path = log_path(mod_name)
@@ -32,6 +32,7 @@ class Terraspace::Compiler::Strategy::Tfvar
32
32
  extend Memoist
33
33
  include Terraspace::Layering
34
34
  include Terraspace::Plugin::Expander::Friendly
35
+ include Terraspace::Util
35
36
 
36
37
  def initialize(mod)
37
38
  @mod = mod
@@ -40,7 +41,11 @@ class Terraspace::Compiler::Strategy::Tfvar
40
41
  def paths
41
42
  project_paths = full_paths(project_tfvars_dir)
42
43
  stack_paths = full_paths(stack_tfvars_dir)
43
- project_paths + stack_paths
44
+ paths = project_paths + stack_paths
45
+ show_layers(paths)
46
+ paths.select do |path|
47
+ File.exist?(path)
48
+ end
44
49
  end
45
50
  memoize :paths
46
51
 
@@ -51,10 +56,6 @@ class Terraspace::Compiler::Strategy::Tfvar
51
56
  "#{tfvars_dir}/#{layer}.rb",
52
57
  ]
53
58
  end.flatten
54
-
55
- layer_paths.select do |path|
56
- File.exist?(path)
57
- end
58
59
  end
59
60
 
60
61
  def full_layering
@@ -130,5 +131,20 @@ class Terraspace::Compiler::Strategy::Tfvar
130
131
  empty = Dir.glob("#{seed_dir}/*").empty?
131
132
  empty ? mod_dir : seed_dir
132
133
  end
134
+
135
+ @@shown_layers = {}
136
+ def show_layers(paths)
137
+ return unless @mod.resolved
138
+ return if @@shown_layers[@mod.name]
139
+ logger.debug "Layers for #{@mod.name}:"
140
+ paths.each do |path|
141
+ next unless path.include?('.tfvars')
142
+ show = File.exist?(path) || ENV['TS_SHOW_ALL_LAYERS']
143
+ logger.debug " #{pretty_path(path)}" if show
144
+ end
145
+ logger.debug ""
146
+ @@shown_layers[@mod.name] = true
147
+ end
148
+
133
149
  end
134
150
  end
@@ -1,5 +1,7 @@
1
1
  module Terraspace::Compiler::Strategy
2
2
  class Tfvar
3
+ extend Memoist
4
+
3
5
  def initialize(mod)
4
6
  @mod = mod
5
7
  @order = 0
@@ -24,6 +26,7 @@ module Terraspace::Compiler::Strategy
24
26
  def layer_paths
25
27
  Layer.new(@mod).paths
26
28
  end
29
+ memoize :layer_paths
27
30
 
28
31
  # Tact on number to ensure that tfvars will be processed in desired order.
29
32
  # Also name auto.tfvars so it will automatically load
@@ -34,7 +34,7 @@ module Terraspace::Compiler
34
34
  if content.respond_to?(:path) # IO filehandle
35
35
  FileUtils.cp(content.path, dest_path) # preserves permission
36
36
  else # just content
37
- IO.write(dest_path, content)
37
+ IO.write(dest_path, content, mode: "wb")
38
38
  end
39
39
  logger.debug "Created #{Terraspace::Util.pretty_path(dest_path)}"
40
40
  end
@@ -11,11 +11,8 @@ module Terraspace
11
11
  def root
12
12
  @@root ||= ENV['TS_ROOT'] || Dir.pwd
13
13
  end
14
-
15
14
  # allow testing frameworks to switch roots
16
- def root=(v)
17
- @@root = v
18
- end
15
+ cattr_writer :root
19
16
 
20
17
  def cache_root
21
18
  ENV['TS_CACHE_ROOT'] || config.build.cache_root || "#{root}/.terraspace-cache"
@@ -61,22 +58,7 @@ module Terraspace
61
58
 
62
59
  # Terraspace.argv provides consistency when terraspace is being called by rspec-terraspace test harness
63
60
  # So use Terraspace.argv instead of ARGV constant
64
- def argv=(argv)
65
- @@argv = argv
66
- end
67
-
68
- def argv
69
- @@argv
70
- end
71
-
72
- @@check_project = true
73
- def check_project
74
- @@check_project
75
- end
76
-
77
- # allow testing frameworks to disable
78
- def check_project=(v)
79
- @@check_project = v
80
- end
61
+ cattr_accessor :argv
62
+ cattr_accessor :check_project, default: true
81
63
  end
82
64
  end
@@ -8,7 +8,7 @@ class Module
8
8
  # Caller lines are different for OSes:
9
9
  #
10
10
  # windows: "C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/terraspace-1.1.1/lib/terraspace/builder.rb:34:in `build'"
11
- # linux: "/home/ec2-user/.rvm/gems/ruby-3.0.3/gems/terraspace-1.1.1//lib/terraspace/compiler/dsl/syntax/mod.rb:4:in `<module:Mod>'"
11
+ # linux: "/home/ec2-user/.rvm/gems/ruby-3.0.3/gems/terraspace-1.1.1/lib/terraspace/compiler/dsl/syntax/mod.rb:4:in `<module:Mod>'"
12
12
  #
13
13
  def include_dir(dir)
14
14
  caller_line = caller[0]
@@ -5,7 +5,8 @@ module Terraspace::Plugin::Expander
5
5
  # Terraspace::Plugin::Expander::Interface
6
6
  def friendly_name(name)
7
7
  return '' if name.nil?
8
- Terraspace.config.layering.names[name.to_sym] || name
8
+ names = Terraspace.config.layering.names.stringify_keys
9
+ names[name.to_s] || name
9
10
  end
10
11
  end
11
12
  end
@@ -1,3 +1,3 @@
1
1
  module Terraspace
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.6"
3
3
  end
data/terraspace.gemspec CHANGED
@@ -12,6 +12,10 @@ Gem::Specification.new do |spec|
12
12
  spec.homepage = "https://terraspace.cloud"
13
13
  spec.license = "Apache-2.0"
14
14
 
15
+ spec.metadata["homepage_uri"] = spec.homepage
16
+ spec.metadata["source_code_uri"] = "https://github.com/boltops-tools/terraspace"
17
+ spec.metadata["changelog_uri"] = "https://github.com/boltops-tools/terraspace/blob/master/CHANGELOG.md"
18
+
15
19
  spec.files = File.directory?('.git') ? `git ls-files`.split($/) : Dir.glob("**/*")
16
20
  spec.bindir = "exe"
17
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
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: 1.1.2
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-17 00:00:00.000000000 Z
11
+ date: 2022-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -870,7 +870,10 @@ files:
870
870
  homepage: https://terraspace.cloud
871
871
  licenses:
872
872
  - Apache-2.0
873
- metadata: {}
873
+ metadata:
874
+ homepage_uri: https://terraspace.cloud
875
+ source_code_uri: https://github.com/boltops-tools/terraspace
876
+ changelog_uri: https://github.com/boltops-tools/terraspace/blob/master/CHANGELOG.md
874
877
  post_install_message:
875
878
  rdoc_options: []
876
879
  require_paths: