rake_terraform 0.35.0 → 1.0.0.pre.pre.1

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: 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