terraspace 2.2.3 → 2.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/terraspace/app.rb +3 -0
- data/lib/terraspace/builder.rb +1 -1
- data/lib/terraspace/cli.rb +1 -1
- data/lib/terraspace/compiler/perform.rb +4 -3
- data/lib/terraspace/compiler/strategy/abstract_base.rb +3 -2
- data/lib/terraspace/compiler/strategy/mod.rb +38 -0
- data/lib/terraspace/plugin/expander/interface.rb +1 -1
- data/lib/terraspace/version.rb +1 -1
- data/spec/terraspace/provider/expander/generic_spec.rb +4 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cea629f7a076ccbe0f682b3037fda1e69fe8f7658243e502103b395ff0396351
|
4
|
+
data.tar.gz: ab8d340084aef5691796484d2942469262978ac848b8fc6f33d54b49d60609e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 421a85f27bc4fb0906de29037eba4f7e3d852b8c0ce60191e911ccd615a04897a3d631e7c742eba8006e681f893d6715097910fd71a558b0931e36d3d8a0d881
|
7
|
+
data.tar.gz: 94c6f9f9a605a8e151576efb54d0326e7a6a0d8d18736edc9607bb04b35c158040d801d58ff50cf2567db21013095a531914c501ca19609b672f35c4450f0baf
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,13 @@
|
|
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
|
+
## [2.2.5] - 2023-05-02
|
7
|
+
- [#301](https://github.com/boltops-tools/terraspace/pull/301) Speed boast copy modules
|
8
|
+
|
9
|
+
## [2.2.4] - 2023-04-19
|
10
|
+
- [#293](https://github.com/boltops-tools/terraspace/pull/293) terrraspace import cli help fix
|
11
|
+
- [#299](https://github.com/boltops-tools/terraspace/pull/299) fix expansion for the case of ENV var is not set
|
12
|
+
|
6
13
|
## [2.2.3] - 2022-12-11
|
7
14
|
- [#283](https://github.com/boltops-tools/terraspace/pull/283) update terraspace new cli help
|
8
15
|
- [#285](https://github.com/boltops-tools/terraspace/pull/285) Only generate output files with content
|
data/lib/terraspace/app.rb
CHANGED
@@ -43,6 +43,9 @@ module Terraspace
|
|
43
43
|
config.build.default_pass_files = ["/files/"]
|
44
44
|
config.build.pass_files = []
|
45
45
|
config.build.dependency_words = []
|
46
|
+
# copy_modules = nil # => Will show a warning and default to true
|
47
|
+
# copy_modules = true # => Will be default in next major version
|
48
|
+
config.build.copy_modules = nil # speed improvement
|
46
49
|
|
47
50
|
config.bundle = ActiveSupport::OrderedOptions.new
|
48
51
|
config.bundle.logger = ts_logger
|
data/lib/terraspace/builder.rb
CHANGED
@@ -69,7 +69,7 @@ module Terraspace
|
|
69
69
|
with_each_mod(type_dir) do |mod|
|
70
70
|
is_root_module = mod.cache_dir == @mod.cache_dir
|
71
71
|
next if is_root_module # handled by build_stacks
|
72
|
-
Compiler::Perform.new(mod).compile
|
72
|
+
Compiler::Perform.new(mod, type_dir: type_dir).compile
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
data/lib/terraspace/cli.rb
CHANGED
@@ -109,7 +109,7 @@ module Terraspace
|
|
109
109
|
Fmt.new(options.merge(mod: mod)).run
|
110
110
|
end
|
111
111
|
|
112
|
-
desc "import ADDR ID", "Import existing infrastructure into your Terraform state"
|
112
|
+
desc "import STACK ADDR ID", "Import existing infrastructure into your Terraform state"
|
113
113
|
long_desc Help.text(:import)
|
114
114
|
def import(mod, addr, id)
|
115
115
|
Import.new(options.merge(mod: mod, addr: addr, id: id)).run
|
@@ -3,8 +3,9 @@ module Terraspace::Compiler
|
|
3
3
|
include CommandsConcern
|
4
4
|
include Basename
|
5
5
|
|
6
|
-
def initialize(mod)
|
7
|
-
|
6
|
+
def initialize(mod, options={})
|
7
|
+
# options for type_dir
|
8
|
+
@mod, @options = mod, options
|
8
9
|
end
|
9
10
|
|
10
11
|
def compile
|
@@ -60,7 +61,7 @@ module Terraspace::Compiler
|
|
60
61
|
end
|
61
62
|
|
62
63
|
def compile_mod_file(src_path)
|
63
|
-
content = Strategy::Mod.new(@mod, src_path).run
|
64
|
+
content = Strategy::Mod.new(@mod, src_path, @options).run
|
64
65
|
Writer.new(@mod, src_path: src_path).write(content)
|
65
66
|
end
|
66
67
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module Terraspace::Compiler::Strategy
|
2
2
|
class AbstractBase
|
3
|
-
def initialize(mod, src_path)
|
4
|
-
|
3
|
+
def initialize(mod, src_path, options={})
|
4
|
+
# options for type_dir
|
5
|
+
@mod, @src_path, @options = mod, src_path, options
|
5
6
|
end
|
6
7
|
end
|
7
8
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Terraspace::Compiler::Strategy
|
2
2
|
class Mod < AbstractBase
|
3
|
+
include Terraspace::Util::Logging
|
4
|
+
|
3
5
|
def run
|
4
6
|
klass = strategy_class(@src_path)
|
5
7
|
strategy = klass.new(@mod, @src_path) # IE: Terraspace::Compiler::Strategy::Mod::Rb.new
|
@@ -7,6 +9,9 @@ module Terraspace::Compiler::Strategy
|
|
7
9
|
end
|
8
10
|
|
9
11
|
def strategy_class(path)
|
12
|
+
# Significant speed improvement
|
13
|
+
return Mod::Pass if copy_modules?
|
14
|
+
|
10
15
|
ext = File.extname(path).sub('.','')
|
11
16
|
return Mod::Pass if ext.empty? # infinite loop without this
|
12
17
|
return Mod::Pass if Terraspace.pass_file?(path) or !text_file?(path)
|
@@ -14,6 +19,39 @@ module Terraspace::Compiler::Strategy
|
|
14
19
|
"Terraspace::Compiler::Strategy::Mod::#{ext.camelize}".constantize rescue Mod::Pass
|
15
20
|
end
|
16
21
|
|
22
|
+
@@copy_modules_warned = false
|
23
|
+
def copy_modules?
|
24
|
+
return false unless @options[:type_dir] == "modules"
|
25
|
+
|
26
|
+
copy_modules = Terraspace.config.build.copy_modules
|
27
|
+
if copy_modules.nil? && @@copy_modules_warned == false
|
28
|
+
logger.info "WARN: config.build.copy_modules is not set. Defaulting to true.".color(:yellow)
|
29
|
+
logger.info <<~EOL
|
30
|
+
The terraspace building behavior is to copy modules from
|
31
|
+
the app/modules folder to the .terraspace-cache for speed.
|
32
|
+
Most do not need app/modules to be compiled.
|
33
|
+
Other files like app/stacks and tfvars files are still compiled.
|
34
|
+
This is a change from previous versions of Terraspace, where
|
35
|
+
all files were compiled.
|
36
|
+
|
37
|
+
You can turn this warning off by setting:
|
38
|
+
|
39
|
+
.terraspace/config.rb
|
40
|
+
|
41
|
+
Terraspace.configure do |config|
|
42
|
+
config.build.copy_modules = true
|
43
|
+
end
|
44
|
+
|
45
|
+
In future Terraspace versions, the default will be true.
|
46
|
+
There will be no warning message, but it will still be configurable.
|
47
|
+
EOL
|
48
|
+
copy_modules = true
|
49
|
+
@@copy_modules_warned = true
|
50
|
+
end
|
51
|
+
|
52
|
+
copy_modules
|
53
|
+
end
|
54
|
+
|
17
55
|
private
|
18
56
|
def text_file?(filename)
|
19
57
|
TextFile.new(filename).check
|
data/lib/terraspace/version.rb
CHANGED
@@ -3,7 +3,7 @@ describe Terraspace::Plugin::Expander::Generic do
|
|
3
3
|
let(:props) do
|
4
4
|
{
|
5
5
|
bucket: "my-bucket",
|
6
|
-
key: ":env/:build_dir/terraform.tfstate", # variable notation expanded by terraspace
|
6
|
+
key: ":env/:TEAM/:ENVNOTSET/:build_dir/terraform.tfstate", # variable notation expanded by terraspace
|
7
7
|
region: "us-west-2",
|
8
8
|
encrypt: true,
|
9
9
|
dynamodb_table: "terraform_locks"
|
@@ -15,12 +15,14 @@ describe Terraspace::Plugin::Expander::Generic do
|
|
15
15
|
mod
|
16
16
|
end
|
17
17
|
|
18
|
+
before { stub_const('ENV', {'TEAM' => 'backend'}) }
|
19
|
+
|
18
20
|
context "default path" do
|
19
21
|
it "expand" do
|
20
22
|
result = expander.expand(props)
|
21
23
|
expect(result).to eq({
|
22
24
|
bucket: "my-bucket",
|
23
|
-
key: "dev/stacks/core/terraform.tfstate",
|
25
|
+
key: "dev/backend/stacks/core/terraform.tfstate",
|
24
26
|
region: "us-west-2",
|
25
27
|
encrypt: true,
|
26
28
|
dynamodb_table: "terraform_locks"
|
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: 2.2.
|
4
|
+
version: 2.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -346,7 +346,7 @@ dependencies:
|
|
346
346
|
- - ">="
|
347
347
|
- !ruby/object:Gem::Version
|
348
348
|
version: '0'
|
349
|
-
description:
|
349
|
+
description:
|
350
350
|
email:
|
351
351
|
- tung@boltops.com
|
352
352
|
executables:
|
@@ -950,7 +950,7 @@ metadata:
|
|
950
950
|
homepage_uri: https://terraspace.cloud
|
951
951
|
source_code_uri: https://github.com/boltops-tools/terraspace
|
952
952
|
changelog_uri: https://github.com/boltops-tools/terraspace/blob/master/CHANGELOG.md
|
953
|
-
post_install_message:
|
953
|
+
post_install_message:
|
954
954
|
rdoc_options: []
|
955
955
|
require_paths:
|
956
956
|
- lib
|
@@ -966,7 +966,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
966
966
|
version: '0'
|
967
967
|
requirements: []
|
968
968
|
rubygems_version: 3.3.26
|
969
|
-
signing_key:
|
969
|
+
signing_key:
|
970
970
|
specification_version: 4
|
971
971
|
summary: 'Terraspace: The Terraspace Framework'
|
972
972
|
test_files:
|