rake_terraform 0.35.0 → 1.0.0.pre.pre.1

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2c1eb472cc4f80c52ca39865d920c200a425e6f76e7e37f6407d603b280dbc1
4
- data.tar.gz: 7b6603b087edb2f7cc5c8b86f238453640afb51c398014377d56628dea47f797
3
+ metadata.gz: fd20b77a664a79fab0d81ba66cd46ebddaf2a09ea5cd01c72425b54438586281
4
+ data.tar.gz: f2f27f6c4314a992232c1897a3b85c2b1bbd0c7d1a550fbf1093a3a0e8bee3bf
5
5
  SHA512:
6
- metadata.gz: 9830f1df1e666b04864365620f05be1e46bab2944717ee495fe40acc264007aad57cbd72f39ee6487a5213f905ad7a6b977f9745f0e6b8fa8e2eb7313ec4a40c
7
- data.tar.gz: 62b729595baf7c54d205ad327f03196947230b371e2789897d8077f2d2bce92715f7a9035777940f376d86193b22a3e7f22f72c4678075c7a3fa4e0ca8a9a1c4
6
+ metadata.gz: 6c39779c8e16c06cae0e4d8908672c1d2d29e8cd5b139e9709bb047e677458f8fca134ac8456eca4e71af63e7aa26ede63b56a72e3277a2758c3df810d77777b
7
+ data.tar.gz: 5e293d0e96e7a47971ce548cdc30cbacfe52b550610c0c7718a4204042a730cb0094c4560cb5a275c6114becc5dda9fe831a4ee4778ff72ff3b831f98676d3e8
data/Gemfile.lock CHANGED
@@ -1,15 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rake_terraform (0.35.0)
4
+ rake_terraform (1.0.0.pre.pre.1)
5
5
  colored2 (~> 3.1)
6
- rake_dependencies (~> 1.6)
7
- ruby-terraform (~> 0.46)
6
+ rake_dependencies (>= 1.8)
7
+ rake_factory (>= 0.15)
8
+ ruby-terraform (~> 0.48)
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- activesupport (5.2.3)
13
+ activesupport (5.2.4.1)
13
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
15
  i18n (>= 0.7, < 2)
15
16
  minitest (~> 5.1)
@@ -18,44 +19,44 @@ GEM
18
19
  concurrent-ruby (1.1.5)
19
20
  diff-lcs (1.3)
20
21
  fakefs (0.20.1)
21
- gem-release (2.0.4)
22
+ gem-release (2.1.1)
22
23
  hamster (3.0.0)
23
24
  concurrent-ruby (~> 1.0)
24
- i18n (1.7.0)
25
+ i18n (1.8.2)
25
26
  concurrent-ruby (~> 1.0)
26
27
  lino (1.1.0)
27
28
  hamster (~> 3.0)
28
29
  open4 (~> 1.3)
29
30
  minitar (0.9)
30
- minitest (5.12.2)
31
+ minitest (5.14.0)
31
32
  open4 (1.3.4)
32
- rake (13.0.0)
33
- rake_dependencies (1.6.0)
33
+ rake (13.0.1)
34
+ rake_dependencies (1.10.0)
34
35
  hamster (~> 3.0)
35
36
  minitar (~> 0.9)
36
- rake_factory (~> 0.11)
37
+ rake_factory (>= 0.11)
37
38
  rubyzip (~> 2.0)
38
- rake_factory (0.11.0)
39
+ rake_factory (0.15.0)
39
40
  activesupport (~> 5.2)
40
41
  rake (~> 13.0)
41
42
  rspec (3.9.0)
42
43
  rspec-core (~> 3.9.0)
43
44
  rspec-expectations (~> 3.9.0)
44
45
  rspec-mocks (~> 3.9.0)
45
- rspec-core (3.9.0)
46
- rspec-support (~> 3.9.0)
46
+ rspec-core (3.9.1)
47
+ rspec-support (~> 3.9.1)
47
48
  rspec-expectations (3.9.0)
48
49
  diff-lcs (>= 1.2.0, < 2.0)
49
50
  rspec-support (~> 3.9.0)
50
- rspec-mocks (3.9.0)
51
+ rspec-mocks (3.9.1)
51
52
  diff-lcs (>= 1.2.0, < 2.0)
52
53
  rspec-support (~> 3.9.0)
53
- rspec-support (3.9.0)
54
+ rspec-support (3.9.2)
54
55
  ruby-terraform (0.48.0)
55
56
  lino (~> 1.1)
56
57
  rubyzip (2.0.0)
57
58
  thread_safe (0.3.6)
58
- tzinfo (1.2.5)
59
+ tzinfo (1.2.6)
59
60
  thread_safe (~> 0.1)
60
61
 
61
62
  PLATFORMS
@@ -0,0 +1,77 @@
1
+ require 'rake_factory'
2
+
3
+ require_relative '../tasks'
4
+
5
+ module RakeTerraform
6
+ module TaskSets
7
+ class All < RakeFactory::TaskSet
8
+ parameter :configuration_name, :required => true
9
+ parameter :source_directory, :required => true
10
+ parameter :work_directory, :required => true
11
+
12
+ parameter :backend_config
13
+
14
+ parameter :vars
15
+ parameter :var_file
16
+ parameter :state_file
17
+
18
+ parameter :debug, :default => false
19
+
20
+ parameter :no_color, :default => false
21
+ parameter :no_backup, :default => false
22
+ parameter :no_print_output, :default => false
23
+
24
+ parameter :backup_file
25
+ parameter :plan_file
26
+
27
+ parameter :argument_names
28
+
29
+ parameter :ensure_task_name, :default => :'terraform:ensure'
30
+
31
+ parameter :validate_task_name, :default => :validate
32
+ parameter :validate_argument_names
33
+
34
+ parameter :plan_task_name, :default => :plan
35
+ parameter :plan_argument_names
36
+
37
+ parameter :provision_task_name, :default => :provision
38
+ parameter :provision_argument_names
39
+
40
+ parameter :destroy_task_name, :default => :destroy
41
+ parameter :destroy_argument_names
42
+
43
+ parameter :output_task_name, :default => :output
44
+ parameter :output_argument_names
45
+
46
+ task Tasks::Validate,
47
+ name: ->(ts) { ts.validate_task_name },
48
+ argument_names: ->(ts) {
49
+ ts.validate_argument_names || ts.argument_names || []
50
+ }
51
+ task Tasks::Plan, {
52
+ name: ->(ts) { ts.plan_task_name },
53
+ argument_names: ->(ts) {
54
+ ts.plan_argument_names || ts.argument_names || []
55
+ }
56
+ }
57
+ task Tasks::Provision, {
58
+ name: ->(ts) { ts.provision_task_name },
59
+ argument_names: ->(ts) {
60
+ ts.provision_argument_names || ts.argument_names || []
61
+ }
62
+ }
63
+ task Tasks::Destroy, {
64
+ name: ->(ts) { ts.destroy_task_name },
65
+ argument_names: ->(ts) {
66
+ ts.destroy_argument_names || ts.argument_names || []
67
+ }
68
+ }
69
+ task Tasks::Output, {
70
+ name: ->(ts) { ts.output_task_name },
71
+ argument_names: ->(ts) {
72
+ ts.output_argument_names || ts.argument_names || []
73
+ }
74
+ }
75
+ end
76
+ end
77
+ end
@@ -0,0 +1 @@
1
+ require_relative 'task_sets/all'
@@ -1,14 +1,16 @@
1
+ require 'rake_factory'
1
2
  require 'ruby_terraform'
2
3
  require 'ostruct'
3
4
  require 'colored2'
4
- require_relative '../tasklib'
5
5
 
6
6
  module RakeTerraform
7
7
  module Tasks
8
- class Destroy < TaskLib
9
- parameter :name, :default => :destroy
10
- parameter :argument_names, :default => []
11
-
8
+ class Destroy < RakeFactory::Task
9
+ default_name :destroy
10
+ default_prerequisites ->(t) { [t.ensure_task_name] }
11
+ default_description ->(t) {
12
+ "Destroy #{t.configuration_name} using terraform"
13
+ }
12
14
  parameter :configuration_name, :required => true
13
15
  parameter :source_directory, :required => true
14
16
  parameter :work_directory, :required => true
@@ -25,72 +27,33 @@ module RakeTerraform
25
27
 
26
28
  parameter :backup_file
27
29
 
28
- parameter :ensure_task, :default => :'terraform:ensure'
29
-
30
- def process_arguments(args)
31
- self.name = args[0] if args[0]
32
- end
33
-
34
- def define
35
- desc "Destroy #{configuration_name} using terraform"
36
- task name, argument_names => [ensure_task] do |_, args|
37
- Colored2.disable! if no_color
38
-
39
- puts "Destroying #{configuration_name}".cyan
40
-
41
- params = OpenStruct.new({
42
- configuration_name: configuration_name,
43
- source_directory: source_directory,
44
- work_directory: work_directory,
45
- backend_config: backend_config,
46
- var_file: var_file,
47
- state_file: state_file,
48
- debug: debug,
49
- no_color: no_color,
50
- no_backup: no_backup,
51
- backup_file: backup_file,
52
- })
53
-
54
- derived_source_directory = source_directory.respond_to?(:call) ?
55
- source_directory.call(
56
- *[args, params].slice(0, source_directory.arity)) :
57
- source_directory
58
-
59
- configuration_directory = File.join(work_directory, derived_source_directory)
60
-
61
- RubyTerraform.clean(
62
- directory: configuration_directory)
63
-
64
- mkdir_p File.dirname(configuration_directory)
65
- cp_r derived_source_directory, configuration_directory
66
-
67
- params.configuration_directory = configuration_directory
68
-
69
- derived_backend_config = backend_config.respond_to?(:call) ?
70
- backend_config.call(
71
- *[args, params].slice(0, backend_config.arity)) :
72
- backend_config
73
- derived_vars = vars.respond_to?(:call) ?
74
- vars.call(*[args, params].slice(0, vars.arity)) :
75
- vars
76
- derived_state_file = state_file.respond_to?(:call) ?
77
- state_file.call(
78
- *[args, params].slice(0, state_file.arity)) :
79
- state_file
80
-
81
- Dir.chdir(configuration_directory) do
82
- RubyTerraform.init(
83
- backend_config: derived_backend_config,
84
- no_color: no_color)
85
- RubyTerraform.destroy(
86
- force: true,
87
- no_color: no_color,
88
- no_backup: no_backup,
89
- backup: backup_file,
90
- state: derived_state_file,
91
- vars: derived_vars,
92
- var_file: var_file)
93
- end
30
+ parameter :ensure_task_name, :default => :'terraform:ensure'
31
+
32
+ action do |t|
33
+ Colored2.disable! if t.no_color
34
+
35
+ configuration_directory =
36
+ File.join(t.work_directory, t.source_directory)
37
+
38
+ puts "Destroying #{t.configuration_name}".cyan
39
+ RubyTerraform.clean(
40
+ directory: configuration_directory)
41
+
42
+ mkdir_p File.dirname(configuration_directory)
43
+ cp_r t.source_directory, configuration_directory
44
+
45
+ Dir.chdir(configuration_directory) do
46
+ RubyTerraform.init(
47
+ backend_config: t.backend_config,
48
+ no_color: t.no_color)
49
+ RubyTerraform.destroy(
50
+ force: true,
51
+ no_color: t.no_color,
52
+ no_backup: t.no_backup,
53
+ backup: t.backup_file,
54
+ state: t.state_file,
55
+ vars: t.vars,
56
+ var_file: t.var_file)
94
57
  end
95
58
  end
96
59
  end
@@ -1,13 +1,16 @@
1
+ require 'rake_factory'
1
2
  require 'ruby_terraform'
2
3
  require 'ostruct'
3
4
  require 'colored2'
4
- require_relative '../tasklib'
5
5
 
6
6
  module RakeTerraform
7
7
  module Tasks
8
- class Output < TaskLib
9
- parameter :name, :default => :output
10
- parameter :argument_names, :default => []
8
+ class Output < RakeFactory::Task
9
+ default_name :output
10
+ default_prerequisites ->(t) { [t.ensure_task_name] }
11
+ default_description ->(t) {
12
+ "Output #{t.configuration_name} using terraform"
13
+ }
11
14
 
12
15
  parameter :configuration_name, :required => true
13
16
  parameter :source_directory, :required => true
@@ -21,67 +24,33 @@ module RakeTerraform
21
24
  parameter :no_color, :default => false
22
25
  parameter :no_print_output, :default => false
23
26
 
24
- parameter :ensure_task, :default => :'terraform:ensure'
27
+ parameter :ensure_task_name, :default => :'terraform:ensure'
25
28
 
26
- def process_arguments(args)
27
- self.name = args[0] if args[0]
28
- end
29
-
30
- def define
31
- desc "Output #{configuration_name} using terraform"
32
- task name, argument_names => [ensure_task] do |_, args|
33
- Colored2.disable! if no_color
34
-
35
- puts "Output of #{configuration_name}".cyan
36
-
37
- params = OpenStruct.new({
38
- configuration_name: configuration_name,
39
- source_directory: source_directory,
40
- work_directory: work_directory,
41
- backend_config: backend_config,
42
- state_file: state_file,
43
- debug: debug,
44
- no_color: no_color,
45
- no_print_output: no_print_output,
46
- })
47
-
48
- derived_source_directory = source_directory.respond_to?(:call) ?
49
- source_directory.call(
50
- *[args, params].slice(0, source_directory.arity)) :
51
- source_directory
52
-
53
- configuration_directory = File.join(work_directory, derived_source_directory)
54
-
55
- RubyTerraform.clean(
56
- directory: configuration_directory)
29
+ action do |t|
30
+ Colored2.disable! if t.no_color
57
31
 
58
- mkdir_p File.dirname(configuration_directory)
59
- cp_r derived_source_directory, configuration_directory
32
+ configuration_directory =
33
+ File.join(t.work_directory, t.source_directory)
60
34
 
61
- params.configuration_directory = configuration_directory
35
+ puts "Output of #{t.configuration_name}".cyan
36
+ RubyTerraform.clean(
37
+ directory: configuration_directory)
62
38
 
63
- derived_backend_config = backend_config.respond_to?(:call) ?
64
- backend_config.call(
65
- *[args, params].slice(0, backend_config.arity)) :
66
- backend_config
67
- derived_state_file = state_file.respond_to?(:call) ?
68
- state_file.call(
69
- *[args, params].slice(0, state_file.arity)) :
70
- state_file
39
+ mkdir_p File.dirname(configuration_directory)
40
+ cp_r t.source_directory, configuration_directory
71
41
 
72
- Dir.chdir(configuration_directory) do
73
- RubyTerraform.init(
74
- backend_config: derived_backend_config,
75
- no_color: no_color)
42
+ Dir.chdir(configuration_directory) do
43
+ RubyTerraform.init(
44
+ backend_config: t.backend_config,
45
+ no_color: t.no_color)
76
46
 
77
- output = RubyTerraform.output(
78
- no_color: no_color,
79
- state: derived_state_file)
47
+ output = RubyTerraform.output(
48
+ no_color: t.no_color,
49
+ state: t.state_file)
80
50
 
81
- puts output unless no_print_output
51
+ puts output unless t.no_print_output
82
52
 
83
- output
84
- end
53
+ output
85
54
  end
86
55
  end
87
56
  end
@@ -1,13 +1,16 @@
1
+ require 'rake_factory'
1
2
  require 'ruby_terraform'
2
3
  require 'ostruct'
3
4
  require 'colored2'
4
- require_relative '../tasklib'
5
5
 
6
6
  module RakeTerraform
7
7
  module Tasks
8
- class Plan < TaskLib
9
- parameter :name, :default => :plan
10
- parameter :argument_names, :default => []
8
+ class Plan < RakeFactory::Task
9
+ default_name :plan
10
+ default_prerequisites ->(t) { [t.ensure_task_name] }
11
+ default_description ->(t) {
12
+ "Plan #{t.configuration_name} using terraform"
13
+ }
11
14
 
12
15
  parameter :configuration_name, :required => true
13
16
  parameter :source_directory, :required => true
@@ -25,68 +28,32 @@ module RakeTerraform
25
28
  parameter :plan_file
26
29
  parameter :destroy, :default => false
27
30
 
28
- parameter :ensure_task, :default => :'terraform:ensure'
31
+ parameter :ensure_task_name, :default => :'terraform:ensure'
29
32
 
30
- def process_arguments(args)
31
- self.name = args[0] if args[0]
32
- end
33
-
34
- def define
35
- desc "Plan #{configuration_name} using terraform"
36
- task name, argument_names => [ensure_task] do |_, args|
37
- Colored2.disable! if no_color
38
-
39
- puts "Planning #{configuration_name}".cyan
40
-
41
- params = OpenStruct.new({
42
- configuration_name: configuration_name,
43
- source_directory: source_directory,
44
- work_directory: work_directory,
45
- backend_config: backend_config,
46
- state_file: state_file,
47
- debug: debug,
48
- no_color: no_color,
49
- })
50
-
51
- derived_source_directory = source_directory.respond_to?(:call) ?
52
- source_directory.call(
53
- *[args, params].slice(0, source_directory.arity)) :
54
- source_directory
55
-
56
- configuration_directory = File.join(work_directory, derived_source_directory)
57
-
58
- RubyTerraform.clean(
59
- directory: configuration_directory)
33
+ action do |t|
34
+ Colored2.disable! if t.no_color
60
35
 
61
- mkdir_p File.dirname(configuration_directory)
62
- cp_r derived_source_directory, configuration_directory
36
+ configuration_directory =
37
+ File.join(t.work_directory, t.source_directory)
63
38
 
64
- params.configuration_directory = configuration_directory
39
+ puts "Planning #{configuration_name}".cyan
40
+ RubyTerraform.clean(
41
+ directory: configuration_directory)
65
42
 
66
- derived_backend_config = backend_config.respond_to?(:call) ?
67
- backend_config.call(
68
- *[args, params].slice(0, backend_config.arity)) :
69
- backend_config
70
- derived_vars = vars.respond_to?(:call) ?
71
- vars.call(*[args, params].slice(0, vars.arity)) :
72
- vars
73
- derived_state_file = state_file.respond_to?(:call) ?
74
- state_file.call(
75
- *[args, params].slice(0, state_file.arity)) :
76
- state_file
43
+ mkdir_p File.dirname(configuration_directory)
44
+ cp_r t.source_directory, configuration_directory
77
45
 
78
- Dir.chdir(configuration_directory) do
79
- RubyTerraform.init(
80
- backend_config: derived_backend_config,
81
- no_color: no_color)
82
- RubyTerraform.plan(
83
- no_color: no_color,
84
- destroy: destroy,
85
- state: derived_state_file,
86
- plan: plan_file,
87
- vars: derived_vars,
88
- var_file: var_file)
89
- end
46
+ Dir.chdir(configuration_directory) do
47
+ RubyTerraform.init(
48
+ backend_config: t.backend_config,
49
+ no_color: t.no_color)
50
+ RubyTerraform.plan(
51
+ no_color: t.no_color,
52
+ destroy: t.destroy,
53
+ state: t.state_file,
54
+ plan: t.plan_file,
55
+ vars: t.vars,
56
+ var_file: t.var_file)
90
57
  end
91
58
  end
92
59
  end
@@ -1,13 +1,16 @@
1
+ require 'rake_factory'
1
2
  require 'ruby_terraform'
2
3
  require 'ostruct'
3
4
  require 'colored2'
4
- require_relative '../tasklib'
5
5
 
6
6
  module RakeTerraform
7
7
  module Tasks
8
- class Provision < TaskLib
9
- parameter :name, :default => :provision
10
- parameter :argument_names, :default => []
8
+ class Provision < RakeFactory::Task
9
+ default_name :provision
10
+ default_prerequisites ->(t) { [t.ensure_task_name] }
11
+ default_description ->(t) {
12
+ "Provision #{t.configuration_name} using terraform"
13
+ }
11
14
 
12
15
  parameter :configuration_name, :required => true
13
16
  parameter :source_directory, :required => true
@@ -25,72 +28,34 @@ module RakeTerraform
25
28
 
26
29
  parameter :backup_file
27
30
 
28
- parameter :ensure_task, :default => :'terraform:ensure'
31
+ parameter :ensure_task_name, :default => :'terraform:ensure'
29
32
 
30
- def process_arguments(args)
31
- self.name = args[0] if args[0]
32
- end
33
-
34
- def define
35
- desc "Provision #{configuration_name} using terraform"
36
- task name, argument_names => [ensure_task] do |_, args|
37
- Colored2.disable! if no_color
38
-
39
- puts "Provisioning #{configuration_name}".cyan
40
-
41
- params = OpenStruct.new({
42
- configuration_name: configuration_name,
43
- source_directory: source_directory,
44
- work_directory: work_directory,
45
- backend_config: backend_config,
46
- var_file: var_file,
47
- state_file: state_file,
48
- debug: debug,
49
- no_color: no_color,
50
- no_backup: no_backup,
51
- backup_file: backup_file,
52
- })
53
-
54
- derived_source_directory = source_directory.respond_to?(:call) ?
55
- source_directory.call(
56
- *[args, params].slice(0, source_directory.arity)) :
57
- source_directory
58
-
59
- configuration_directory = File.join(work_directory, derived_source_directory)
33
+ action do |t|
34
+ Colored2.disable! if t.no_color
60
35
 
61
- RubyTerraform.clean(
62
- directory: configuration_directory)
36
+ configuration_directory =
37
+ File.join(t.work_directory, t.source_directory)
63
38
 
64
- mkdir_p File.dirname(configuration_directory)
65
- cp_r derived_source_directory, configuration_directory
39
+ puts "Provisioning #{t.configuration_name}".cyan
40
+ RubyTerraform.clean(
41
+ directory: configuration_directory)
66
42
 
67
- params.configuration_directory = configuration_directory
43
+ mkdir_p File.dirname(configuration_directory)
44
+ cp_r t.source_directory, configuration_directory
68
45
 
69
- derived_backend_config = backend_config.respond_to?(:call) ?
70
- backend_config.call(
71
- *[args, params].slice(0, backend_config.arity)) :
72
- backend_config
73
- derived_vars = vars.respond_to?(:call) ?
74
- vars.call(*[args, params].slice(0, vars.arity)) :
75
- vars
76
- derived_state_file = state_file.respond_to?(:call) ?
77
- state_file.call(
78
- *[args, params].slice(0, state_file.arity)) :
79
- state_file
80
46
 
81
- Dir.chdir(configuration_directory) do
82
- RubyTerraform.init(
83
- backend_config: derived_backend_config,
84
- no_color: no_color)
85
- RubyTerraform.apply(
86
- auto_approve: true,
87
- no_color: no_color,
88
- no_backup: no_backup,
89
- backup: backup_file,
90
- state: derived_state_file,
91
- vars: derived_vars,
92
- var_file: var_file)
93
- end
47
+ Dir.chdir(configuration_directory) do
48
+ RubyTerraform.init(
49
+ backend_config: t.backend_config,
50
+ no_color: t.no_color)
51
+ RubyTerraform.apply(
52
+ auto_approve: true,
53
+ no_color: t.no_color,
54
+ no_backup: t.no_backup,
55
+ backup: t.backup_file,
56
+ state: t.state_file,
57
+ vars: t.vars,
58
+ var_file: t.var_file)
94
59
  end
95
60
  end
96
61
  end
@@ -1,13 +1,16 @@
1
+ require 'rake_factory'
1
2
  require 'ruby_terraform'
2
3
  require 'ostruct'
3
4
  require 'colored2'
4
- require_relative '../tasklib'
5
5
 
6
6
  module RakeTerraform
7
7
  module Tasks
8
- class Validate < TaskLib
9
- parameter :name, :default => :validate
10
- parameter :argument_names, :default => []
8
+ class Validate < RakeFactory::Task
9
+ default_name :validate
10
+ default_prerequisites ->(t) { [t.ensure_task_name] }
11
+ default_description ->(t) {
12
+ "Validate #{t.configuration_name} using terraform"
13
+ }
11
14
 
12
15
  parameter :configuration_name, :required => true
13
16
  parameter :source_directory, :required => true
@@ -22,66 +25,30 @@ module RakeTerraform
22
25
  parameter :debug, :default => false
23
26
  parameter :no_color, :default => false
24
27
 
25
- parameter :ensure_task, :default => :'terraform:ensure'
28
+ parameter :ensure_task_name, :default => :'terraform:ensure'
26
29
 
27
- def process_arguments(args)
28
- self.name = args[0] if args[0]
29
- end
30
-
31
- def define
32
- desc "Validate #{configuration_name} using terraform"
33
- task name, argument_names => [ensure_task] do |_, args|
34
- Colored2.disable! if no_color
35
-
36
- puts "Validating #{configuration_name}".cyan
37
-
38
- params = OpenStruct.new({
39
- configuration_name: configuration_name,
40
- source_directory: source_directory,
41
- work_directory: work_directory,
42
- backend_config: backend_config,
43
- state_file: state_file,
44
- debug: debug,
45
- no_color: no_color,
46
- })
47
-
48
- derived_source_directory = source_directory.respond_to?(:call) ?
49
- source_directory.call(
50
- *[args, params].slice(0, source_directory.arity)) :
51
- source_directory
52
-
53
- configuration_directory = File.join(work_directory, derived_source_directory)
54
-
55
- RubyTerraform.clean(
56
- directory: configuration_directory)
30
+ action do |t|
31
+ Colored2.disable! if t.no_color
57
32
 
58
- mkdir_p File.dirname(configuration_directory)
59
- cp_r derived_source_directory, configuration_directory
33
+ configuration_directory =
34
+ File.join(t.work_directory, t.source_directory)
60
35
 
61
- params.configuration_directory = configuration_directory
36
+ puts "Validating #{t.configuration_name}".cyan
37
+ RubyTerraform.clean(
38
+ directory: configuration_directory)
62
39
 
63
- derived_backend_config = backend_config.respond_to?(:call) ?
64
- backend_config.call(
65
- *[args, params].slice(0, backend_config.arity)) :
66
- backend_config
67
- derived_vars = vars.respond_to?(:call) ?
68
- vars.call(*[args, params].slice(0, vars.arity)) :
69
- vars
70
- derived_state_file = state_file.respond_to?(:call) ?
71
- state_file.call(
72
- *[args, params].slice(0, state_file.arity)) :
73
- state_file
40
+ mkdir_p File.dirname(configuration_directory)
41
+ cp_r t.source_directory, configuration_directory
74
42
 
75
- Dir.chdir(configuration_directory) do
76
- RubyTerraform.init(
77
- backend_config: derived_backend_config,
78
- no_color: no_color)
79
- RubyTerraform.validate(
80
- no_color: no_color,
81
- state: derived_state_file,
82
- vars: derived_vars,
83
- var_file: var_file)
84
- end
43
+ Dir.chdir(configuration_directory) do
44
+ RubyTerraform.init(
45
+ backend_config: t.backend_config,
46
+ no_color: t.no_color)
47
+ RubyTerraform.validate(
48
+ no_color: t.no_color,
49
+ state: t.state_file,
50
+ vars: t.vars,
51
+ var_file: t.var_file)
85
52
  end
86
53
  end
87
54
  end
@@ -3,4 +3,3 @@ require_relative 'tasks/plan'
3
3
  require_relative 'tasks/provision'
4
4
  require_relative 'tasks/destroy'
5
5
  require_relative 'tasks/output'
6
- require_relative 'tasks/all'
@@ -1,3 +1,3 @@
1
1
  module RakeTerraform
2
- VERSION = "0.35.0"
2
+ VERSION = "1.0.0-pre.1"
3
3
  end
@@ -2,14 +2,14 @@ require 'logger'
2
2
  require 'rake_dependencies'
3
3
  require 'ruby_terraform'
4
4
  require 'rake_terraform/version'
5
- require 'rake_terraform/tasklib'
6
5
  require 'rake_terraform/tasks'
6
+ require 'rake_terraform/task_sets'
7
7
 
8
8
  module RakeTerraform
9
9
  include RubyTerraform
10
10
 
11
11
  def self.define_command_tasks(&block)
12
- RakeTerraform::Tasks::All.new(&block)
12
+ RakeTerraform::TaskSets::All.define(&block)
13
13
  end
14
14
 
15
15
  def self.define_installation_tasks(opts = {})
@@ -23,8 +23,9 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.required_ruby_version = '>= 2.6'
25
25
 
26
- spec.add_dependency 'rake_dependencies', '~> 1.6'
27
- spec.add_dependency 'ruby-terraform', '~> 0.46'
26
+ spec.add_dependency 'rake_dependencies', '>= 1.8'
27
+ spec.add_dependency 'rake_factory', '>= 0.15'
28
+ spec.add_dependency 'ruby-terraform', '~> 0.48'
28
29
  spec.add_dependency 'colored2', '~> 3.1'
29
30
 
30
31
  spec.add_development_dependency 'bundler', '~> 2.0'
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake_terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.35.0
4
+ version: 1.0.0.pre.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-18 00:00:00.000000000 Z
11
+ date: 2020-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake_dependencies
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake_factory
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
25
32
  - !ruby/object:Gem::Version
26
- version: '1.6'
33
+ version: '0.15'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0.15'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: ruby-terraform
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0.46'
47
+ version: '0.48'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '0.46'
54
+ version: '0.48'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: colored2
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -172,10 +186,9 @@ files:
172
186
  - config/secrets/rubygems/credentials
173
187
  - go
174
188
  - lib/rake_terraform.rb
175
- - lib/rake_terraform/exceptions.rb
176
- - lib/rake_terraform/tasklib.rb
189
+ - lib/rake_terraform/task_sets.rb
190
+ - lib/rake_terraform/task_sets/all.rb
177
191
  - lib/rake_terraform/tasks.rb
178
- - lib/rake_terraform/tasks/all.rb
179
192
  - lib/rake_terraform/tasks/destroy.rb
180
193
  - lib/rake_terraform/tasks/output.rb
181
194
  - lib/rake_terraform/tasks/plan.rb
@@ -205,9 +218,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
218
  version: '2.6'
206
219
  required_rubygems_version: !ruby/object:Gem::Requirement
207
220
  requirements:
208
- - - ">="
221
+ - - ">"
209
222
  - !ruby/object:Gem::Version
210
- version: '0'
223
+ version: 1.3.1
211
224
  requirements: []
212
225
  rubygems_version: 3.0.1
213
226
  signing_key:
@@ -1,4 +0,0 @@
1
- module RakeTerraform
2
- class RequiredParameterUnset < ::StandardError
3
- end
4
- end
@@ -1,98 +0,0 @@
1
- require 'rake/tasklib'
2
- require_relative 'exceptions'
3
-
4
- module RakeTerraform
5
- class TaskLib < ::Rake::TaskLib
6
- class << self
7
- def parameter_definitions
8
- @parameter_definitions ||= {}
9
- end
10
-
11
- def parameter(name, options = {})
12
- parameter_definition = ParameterDefinition.new(
13
- name, options[:default], options[:required])
14
- name = parameter_definition.name
15
-
16
- attr_accessor(name)
17
-
18
- parameter_definitions[name] = parameter_definition
19
- end
20
-
21
- def setup_defaults_for(instance)
22
- parameter_definitions.values.each do |parameter_definition|
23
- parameter_definition.apply_default_to(instance)
24
- end
25
- end
26
-
27
- def check_required_for(instance)
28
- dissatisfied = parameter_definitions.values.reject do |definition|
29
- definition.satisfied_by?(instance)
30
- end
31
- unless dissatisfied.empty?
32
- names = dissatisfied.map(&:name)
33
- raise RequiredParameterUnset,
34
- "Required parameter#{names.length > 1 ? 's' : ''} #{names.join(',')} unset."
35
- end
36
- end
37
- end
38
-
39
- def initialize(*args, &block)
40
- setup_defaults
41
- process_arguments(args)
42
- process_block(block)
43
- check_required
44
- define
45
- end
46
-
47
- def setup_defaults
48
- self.class.setup_defaults_for(self)
49
- end
50
-
51
- def process_arguments(_)
52
- end
53
-
54
- def process_block(block)
55
- block.call(self) if block
56
- end
57
-
58
- def check_required
59
- self.class.check_required_for(self)
60
- end
61
-
62
- def define
63
- end
64
-
65
- private
66
-
67
- class ParameterDefinition
68
- attr_reader :name
69
-
70
- def initialize(name, default = nil, required = false)
71
- @name = name.to_sym
72
- @default = default
73
- @required = required
74
- end
75
-
76
- def writer_method
77
- "#{name}="
78
- end
79
-
80
- def reader_method
81
- name
82
- end
83
-
84
- def apply_default_to(instance)
85
- instance.__send__(writer_method, @default) unless @default.nil?
86
- end
87
-
88
- def dissatisfied_by?(instance)
89
- value = instance.__send__(reader_method)
90
- @required && value.nil?
91
- end
92
-
93
- def satisfied_by?(instance)
94
- !dissatisfied_by?(instance)
95
- end
96
- end
97
- end
98
- end
@@ -1,151 +0,0 @@
1
- module RakeTerraform
2
- module Tasks
3
- class All < TaskLib
4
- parameter :configuration_name, :required => true
5
- parameter :source_directory, :required => true
6
- parameter :work_directory, :required => true
7
-
8
- parameter :backend_config
9
-
10
- parameter :vars
11
- parameter :var_file
12
- parameter :state_file
13
-
14
- # Emit additional information for debugging purposes
15
- # Useful to check this value in lambdas passed to backend_config, vars and state_file
16
- parameter :debug, :default => false
17
-
18
- parameter :no_color, :default => false
19
- parameter :no_backup, :default => false
20
- parameter :no_print_output, :default => false
21
-
22
- parameter :backup_file
23
- parameter :plan_file
24
-
25
- # Allows specifying rake task arguments, for example bucket:provision[my_deployment_id]
26
- parameter :argument_names
27
-
28
- parameter :ensure_task, :default => :'terraform:ensure'
29
-
30
- parameter :validate_task_name, :default => :validate
31
- parameter :validate_argument_names
32
-
33
- parameter :plan_task_name, :default => :plan
34
- parameter :plan_argument_names
35
-
36
- parameter :provision_task_name, :default => :provision
37
- parameter :provision_argument_names
38
-
39
- parameter :destroy_task_name, :default => :destroy
40
- parameter :destroy_argument_names
41
-
42
- parameter :output_task_name, :default => :output
43
- parameter :output_argument_names
44
-
45
- def define
46
- Validate.new do |t|
47
- t.name = validate_task_name
48
- t.argument_names = validate_argument_names || argument_names || []
49
-
50
- t.configuration_name = configuration_name
51
- t.source_directory = source_directory
52
- t.work_directory = work_directory
53
-
54
- t.backend_config = backend_config
55
-
56
- t.vars = vars
57
- t.var_file = var_file
58
- t.state_file = state_file
59
-
60
- t.debug = debug
61
- t.no_color = no_color
62
-
63
- t.ensure_task = ensure_task
64
- end
65
- Plan.new do |t|
66
- t.name = plan_task_name
67
- t.argument_names = plan_argument_names || argument_names || []
68
-
69
- t.configuration_name = configuration_name
70
- t.source_directory = source_directory
71
- t.work_directory = work_directory
72
-
73
- t.backend_config = backend_config
74
-
75
- t.vars = vars
76
- t.var_file = var_file
77
- t.state_file = state_file
78
-
79
- t.debug = debug
80
- t.no_color = no_color
81
-
82
- t.plan_file = plan_file
83
-
84
- t.ensure_task = ensure_task
85
- end
86
- Provision.new do |t|
87
- t.name = provision_task_name
88
- t.argument_names = provision_argument_names || argument_names || []
89
-
90
- t.configuration_name = configuration_name
91
- t.source_directory = source_directory
92
- t.work_directory = work_directory
93
-
94
- t.backend_config = backend_config
95
-
96
- t.vars = vars
97
- t.var_file = var_file
98
- t.state_file = state_file
99
-
100
- t.debug = debug
101
- t.no_color = no_color
102
- t.no_backup = no_backup
103
-
104
- t.backup_file = backup_file
105
-
106
- t.ensure_task = ensure_task
107
- end
108
- Destroy.new do |t|
109
- t.name = destroy_task_name
110
- t.argument_names = destroy_argument_names || argument_names || []
111
-
112
- t.configuration_name = configuration_name
113
- t.source_directory = source_directory
114
- t.work_directory = work_directory
115
-
116
- t.backend_config = backend_config
117
-
118
- t.vars = vars
119
- t.var_file = var_file
120
- t.state_file = state_file
121
-
122
- t.debug = debug
123
- t.no_color = no_color
124
- t.no_backup = no_backup
125
-
126
- t.backup_file = backup_file
127
-
128
- t.ensure_task = ensure_task
129
- end
130
- Output.new do |t|
131
- t.name = output_task_name
132
- t.argument_names = output_argument_names || argument_names || []
133
-
134
- t.configuration_name = configuration_name
135
- t.source_directory = source_directory
136
- t.work_directory = work_directory
137
-
138
- t.backend_config = backend_config
139
-
140
- t.state_file = state_file
141
-
142
- t.debug = debug
143
- t.no_color = no_color
144
- t.no_print_output = no_print_output
145
-
146
- t.ensure_task = ensure_task
147
- end
148
- end
149
- end
150
- end
151
- end