rake-terraform 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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.