rake-terraform 0.2.1 → 0.2.2

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTlhYzI2MGMxMjE4ZjNkMThlZDFjOWUxYzM5OWYyZjRlOWI2NDFlZg==
5
- data.tar.gz: !binary |-
6
- OTc5NDMzZDA3YzEzMWY1OGU3ZGE4ZDA2M2IzMzU5NmI0YjgzZGRlMQ==
2
+ SHA1:
3
+ metadata.gz: 3aeb68f3dd5c3a2d25f205dd772f3b05d2dce608
4
+ data.tar.gz: 534dacf569407d0d37471c157f9e6182212ef4da
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YzM0ZGIyOGRjZmJmNmI5OTc0Njk3ZTJjMzExN2M4ZDhiMWZmMWQ3ZTFiYTYx
10
- MWVjN2U0ZWJiYTg0NDQ5MWUxZDg2N2Y0NWU3MWNlZGU3NGI0NTA1YjgyMTVj
11
- N2NlMzgzNjVkNzhkNjliYzQ5ZmIwMWM5YTQxZTVlYjgwNzA0MWI=
12
- data.tar.gz: !binary |-
13
- MDVjMDQ3NzUyNTVkZDQyYWYyN2U3NzcyNzBiY2UzN2VmNjBlZDdiY2FjOWRk
14
- MzBmMjMxMzFjNDg0MjQyOWJhZDdiNDkwZWRlZjYyYTFiYThkNTJiOWQzZDE3
15
- ZDQ5YjJjZGQ2ZTU3Y2IwOTk5OTc5NmJmN2EzOTllNmY2MTI0YjQ=
6
+ metadata.gz: 3a8e49b4fb01c831236926cdc4c839993074e287b790c6910f0a287950f00cc98bebaa60ff509326718021054afdf81ef6c5c14fa760678b7e23325663446512
7
+ data.tar.gz: fbdf99bc785da35fdaa56f49624b8e900ac9510dabda5a94270a5cc8d85b233fb954a8afb4db1a98dd1874ae5542c957692a047b06095dde38975b7ccf5aa357
data/.rubocop.yml CHANGED
@@ -6,6 +6,13 @@ Style/FileName:
6
6
  Exclude:
7
7
  # usability - module name should match the gem name
8
8
  - 'lib/rake-terraform.rb'
9
+ Style/EndOfLine:
10
+ EnforcedStyle: lf
11
+ Style/BlockLength:
12
+ Exclude:
13
+ - 'Rakefile'
14
+ - 'spec/**/*.rb'
15
+ - 'lib/rake-terraform/default_tasks.rb'
9
16
  Metrics/AbcSize:
10
17
  Exclude:
11
18
  # TODO - fix this
data/Rakefile CHANGED
@@ -9,13 +9,13 @@ namespace :test do
9
9
  # default unit tests
10
10
  desc 'Run all unit tests in default spec suite'
11
11
  RSpec::Core::RakeTask.new(:unit) do |task|
12
- task.pattern = 'spec/(unit|rake-terraform)/*_spec.rb'
12
+ task.pattern = 'spec/unit/*_spec.rb'
13
13
  end
14
14
  # add rubocop tasks to test namespace
15
15
  RuboCop::RakeTask.new
16
16
  # run all non-integration/default tests
17
17
  desc 'Run all default test suites'
18
- task default: [:unit, :rubocop]
18
+ task default: %i[unit rubocop]
19
19
  end
20
20
 
21
21
  # default task is to run all the default test suites
@@ -28,6 +28,12 @@ namespace :terraform do
28
28
  abs_relative_path = relative_to_current.relative_path_from(env_glob_root)
29
29
 
30
30
  short_name = abs_relative_path.to_s.tr('/', '_')
31
+
32
+ desc "Initialize Terraform for use in #{short_name}"
33
+ terraform_init "init_#{short_name}" do |t|
34
+ t.input_dir = env
35
+ end
36
+
31
37
  plan_path = File.expand_path File.join(output_base, "#{short_name}.tf")
32
38
  desc "Plan migration of #{short_name}" if hide_tasks == 'false'
33
39
  terraform_plan "plan_#{short_name}" do |t|
@@ -44,7 +50,7 @@ namespace :terraform do
44
50
  end
45
51
 
46
52
  desc "Plan and migrate #{short_name}" if hide_tasks == 'false'
47
- task short_name => %W(plan_#{short_name} apply_#{short_name})
53
+ task short_name => ["plan_#{short_name}", "apply_#{short_name}"]
48
54
  end
49
55
 
50
56
  desc 'Plan and migrate all environments'
@@ -21,6 +21,15 @@ module RakeTerraform
21
21
  RakeTerraform::ApplyTask::Task.new(c.opts).execute
22
22
  end
23
23
  end
24
+
25
+ def terraform_init(*args)
26
+ require 'rake-terraform/inittask'
27
+ Rake::Task.define_task(*args) do
28
+ c = RakeTerraform::InitTask::Config.new
29
+ yield c
30
+ RakeTerraform::InitTask::Task.new(c.opts).execute
31
+ end
32
+ end
24
33
  end
25
34
  end
26
35
 
@@ -0,0 +1,32 @@
1
+ require 'rake-terraform/env_process'
2
+
3
+ module RakeTerraform
4
+ module InitTask
5
+ # Configuration data for terraform plan task
6
+ class Config
7
+ prepend RakeTerraform::EnvProcess
8
+
9
+ def initialize
10
+ # initialize RakeTerraform::EnvProcess
11
+ super
12
+ end
13
+
14
+ def input_dir
15
+ @input_dir ||= File.expand_path 'terraform'
16
+ end
17
+
18
+ # setter method for input_dir triggers setters for tf_environment and
19
+ # state_file so that these are dynamically updated on change (but only if
20
+ # we are using directory state, and not explicit path to a state file)
21
+ def input_dir=(dir)
22
+ @tf_environment = dir
23
+ @state_file = tf_state_file if @state_dir
24
+ @input_dir = dir
25
+ end
26
+
27
+ def opts
28
+ Map.new(input_dir: input_dir)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ require 'rake-terraform/basetask'
2
+ require 'rake-terraform/terraformcmd'
3
+ module RakeTerraform
4
+ module InitTask
5
+ # Custom rake task to run `terraform plan`
6
+ class Task < BaseTask
7
+ include RakeTerraform::TerraformCmd
8
+
9
+ def initialize(opts)
10
+ @opts = opts
11
+ end
12
+
13
+ def execute
14
+ pre_execute_checks
15
+ Dir.chdir(@opts.get(:input_dir)) do
16
+ puts "=> Initializing Terraform for #{@opts.get(:input_dir)}..."
17
+ tf_init
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ # run pre execution checks
24
+ def pre_execute_checks
25
+ validate_terraform_installed
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ require 'rake-terraform/init_task/config'
2
+ require 'rake-terraform/init_task/task'
3
+ # TODO: only needed in < 1.9?
4
+ require 'map'
5
+
6
+ module RakeTerraform
7
+ # == RakeTerraform::InitTask
8
+ #
9
+ # Helper classes for running terraform init
10
+ #
11
+ module InitTask
12
+ end
13
+ end
@@ -14,6 +14,13 @@ module RakeTerraform
14
14
  system(cmd)
15
15
  end
16
16
 
17
+ # perform a 'terraform init'
18
+ #
19
+ def tf_init
20
+ cmd = 'terraform init'
21
+ system(cmd)
22
+ end
23
+
17
24
  # perform a 'terraform plan'
18
25
  #
19
26
  # access_key and secret_key are optional as terraform and it's underlying
@@ -1,4 +1,4 @@
1
1
  # Version of the gem
2
2
  module RakeTerraform
3
- VERSION = '0.2.1'.freeze
3
+ VERSION = '0.2.2'.freeze
4
4
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'rake-terraform/version'
@@ -22,11 +23,11 @@ Gem::Specification.new do |spec|
22
23
  spec.require_paths = ['lib']
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1'
25
- spec.add_development_dependency 'rubocop', '~> 0.29'
26
- spec.add_development_dependency 'rspec', '~> 3.0.0'
26
+ spec.add_development_dependency 'rubocop', '~> 0.49.1'
27
+ spec.add_development_dependency 'rspec', '~> 3.6.0'
27
28
  spec.add_dependency 'dotenv', '~> 2.0.0'
28
29
  spec.add_dependency 'wannabe_bool', '~> 0.3.0'
29
- spec.add_dependency 'rake', '~> 10.0'
30
+ spec.add_dependency 'rake', '~> 12.0'
30
31
  spec.add_dependency 'map', '~> 6.5'
31
32
  spec.add_runtime_dependency 'highline', '~> 1.7'
32
33
  spec.add_runtime_dependency 'iniparse', '~> 1.3'
@@ -169,6 +169,17 @@ module RakeTerraform
169
169
  end
170
170
  end
171
171
  end
172
+
173
+ describe 'tf_init' do
174
+ let(:default_init_cmd) { 'terraform init' }
175
+ context 'with no arguments' do
176
+ it 'should call terraform init' do
177
+ expect(test_class_inst).to receive(:system)
178
+ .with(default_init_cmd)
179
+ test_class_inst.tf_init
180
+ end
181
+ end
182
+ end
172
183
  end
173
184
  end
174
185
  end
metadata CHANGED
@@ -1,154 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norm MacLennan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-23 00:00:00.000000000 Z
11
+ date: 2017-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.29'
33
+ version: 0.49.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.29'
40
+ version: 0.49.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.0
47
+ version: 3.6.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.0.0
54
+ version: 3.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: dotenv
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: wannabe_bool
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.3.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.3.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '12.0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '12.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: map
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '6.5'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '6.5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: highline
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '1.7'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.7'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: iniparse
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: '1.3'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.3'
139
- description: ! "A collection of rake tasks that can\n be used
140
- to plan, apply, and manage\n configurations for Hashicorp
141
- Terraform."
139
+ description: |-
140
+ A collection of rake tasks that can
141
+ be used to plan, apply, and manage
142
+ configurations for Hashicorp Terraform.
142
143
  email:
143
144
  - norm.maclennan@gmail.com
144
145
  executables: []
145
146
  extensions: []
146
147
  extra_rdoc_files: []
147
148
  files:
148
- - .gitignore
149
- - .rspec
150
- - .rubocop.yml
151
- - .travis.yml
149
+ - ".gitignore"
150
+ - ".rspec"
151
+ - ".rubocop.yml"
152
+ - ".travis.yml"
152
153
  - Gemfile
153
154
  - LICENSE.txt
154
155
  - README.md
@@ -162,6 +163,9 @@ files:
162
163
  - lib/rake-terraform/dsl.rb
163
164
  - lib/rake-terraform/env_process.rb
164
165
  - lib/rake-terraform/errors.rb
166
+ - lib/rake-terraform/init_task/config.rb
167
+ - lib/rake-terraform/init_task/task.rb
168
+ - lib/rake-terraform/inittask.rb
165
169
  - lib/rake-terraform/plan_task/config.rb
166
170
  - lib/rake-terraform/plan_task/task.rb
167
171
  - lib/rake-terraform/plantask.rb
@@ -194,17 +198,17 @@ require_paths:
194
198
  - lib
195
199
  required_ruby_version: !ruby/object:Gem::Requirement
196
200
  requirements:
197
- - - ! '>='
201
+ - - ">="
198
202
  - !ruby/object:Gem::Version
199
203
  version: '0'
200
204
  required_rubygems_version: !ruby/object:Gem::Requirement
201
205
  requirements:
202
- - - ! '>='
206
+ - - ">="
203
207
  - !ruby/object:Gem::Version
204
208
  version: '0'
205
209
  requirements: []
206
210
  rubyforge_project:
207
- rubygems_version: 2.4.5
211
+ rubygems_version: 2.6.12
208
212
  signing_key:
209
213
  specification_version: 4
210
214
  summary: Rake tasks for use with Terraform.