ansible-ruby 1.0.1 → 1.0.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 726f48de14e28ee9631e4c8704701a535a3131ae
4
- data.tar.gz: 436a55d8dedd8638b003db3b2fb43e2607a193ac
3
+ metadata.gz: 0b7dc314111b76ada2715f1dc9619d2f8f087dc4
4
+ data.tar.gz: 1a1063f74eef0b00698eb35b2018df427863be4d
5
5
  SHA512:
6
- metadata.gz: d4b793d6abafddba8d48fafee445e5b2c598285915ba168417eccbf3e248d0da2613088f76b677a5fd88788a1b00701bb451379c4cbe3ac8f9d78ef99e80f330
7
- data.tar.gz: 0f657b0bbd6855399efece357a0d4516ebcc52cca63c6f7229a25d86b7bb3282e70ac5eaea8123fac971a14215686b0ea02ee6e009ea40f9d275feec9b2a8778
6
+ metadata.gz: 7db7a733456eaf690c3cef12d995bcde355eb81b88dcb9043fd2bb72746a28538753382219b47e2eab2c3ad2f39c30bfb09c9127aa376b304c8b076e2565fc89
7
+ data.tar.gz: d5f63ff327a8e9f88771f2e63989594f755d0c8650afe4d21ab7db4466cfdb8d3e8e96687885545081f713228cf7f83766c2bcc7514e9bb63df65a33c273e4c2
@@ -3,5 +3,5 @@
3
3
  require 'ansible/ruby/version'
4
4
  require 'ansible/ruby/serializer'
5
5
  require 'ansible/ruby/dsl_builders/file_level'
6
- require 'ansible/ruby/modules/generated'
6
+ require 'ansible/ruby/modules/all'
7
7
  # rubocop:enable Style/FileName
@@ -9,7 +9,7 @@ module Ansible
9
9
  @result = {}
10
10
  end
11
11
 
12
- def process_method(id, *args)
12
+ def _process_method(id, *args)
13
13
  value = args.length == 1 ? args[0] : args
14
14
  @result[id] = value
15
15
  end
@@ -8,7 +8,7 @@ module Ansible
8
8
 
9
9
  attr_reader :result
10
10
 
11
- def evaluate(*args, &block)
11
+ def _evaluate(*args, &block)
12
12
  if block
13
13
  instance_eval(&block)
14
14
  else
@@ -24,7 +24,7 @@ module Ansible
24
24
 
25
25
  def method_missing(id, *args, &block)
26
26
  result = begin
27
- process_method id, *args, &block
27
+ _process_method id, *args, &block
28
28
  rescue StandardError => our_error
29
29
  begin
30
30
  super
@@ -45,7 +45,7 @@ module Ansible
45
45
  nil
46
46
  end
47
47
 
48
- def implicit_bool(args)
48
+ def _implicit_bool(args)
49
49
  args.empty? || args[0]
50
50
  end
51
51
  end
@@ -18,7 +18,7 @@ module Ansible
18
18
  end
19
19
  @context = :playbook
20
20
  play_builder = Play.new name
21
- @plays << play_builder.evaluate(&block)
21
+ @plays << play_builder._evaluate(&block)
22
22
  end
23
23
 
24
24
  def task(name, &block)
@@ -30,20 +30,20 @@ module Ansible
30
30
  @tasks_builder.task name, &block
31
31
  end
32
32
 
33
- def evaluate(*)
33
+ def _evaluate(*)
34
34
  super
35
35
  case @context
36
36
  when :playbook
37
37
  # TODO: Add a playbook DSL and do this like tasks
38
38
  Models::Playbook.new plays: @plays
39
39
  when :tasks
40
- @tasks_builder.evaluate {}
40
+ @tasks_builder._evaluate {}
41
41
  else
42
42
  raise "Unknown context #{@context}"
43
43
  end
44
44
  end
45
45
 
46
- def process_method(id, *)
46
+ def _process_method(id, *)
47
47
  raise "undefined local variable or method `#{id}'"
48
48
  end
49
49
  end
@@ -10,33 +10,51 @@ module Ansible
10
10
  MODULES_MOD = Ansible::Ruby::Modules
11
11
 
12
12
  def respond_to_missing?(method_name, _)
13
- klass_name = klass_name method_name
13
+ klass_name = _klass_name method_name
14
14
  MODULES_MOD.const_defined?(klass_name) || super
15
15
  end
16
16
 
17
17
  private
18
18
 
19
- def klass_name(id)
19
+ def _klass_name(id)
20
20
  id.to_s.capitalize
21
21
  end
22
22
 
23
- def process_method(id, *module_args, &block)
24
- raise "Unknown module #{id}" unless respond_to_missing? id, true
25
- module_klass = MODULES_MOD.const_get klass_name(id)
23
+ def _process_method(id, *module_args, &block)
24
+ module_klass = _module_klass(id)
25
+ args = _arguments(block, module_args, module_klass)
26
+ @result = module_klass.new(args)
27
+ @result.validate!
28
+ end
29
+
30
+ def _arguments(block, module_args, module_klass)
26
31
  free_form_module = module_klass.include?(Ansible::Ruby::Modules::FreeForm)
27
32
  if module_args.any? && !free_form_module
28
33
  raise "Can't use arguments #{module_args} on this type of module"
29
34
  end
30
- free_form = free_form_arg(module_args) if free_form_module
35
+ if !free_form_module && !block
36
+ raise 'You must supply a block when using this type of module'
37
+ end
38
+ args = {}
39
+ free_form = free_form_module && _free_form_arg(module_args)
40
+ args.merge! _block_args(&block)
41
+ args[:free_form] = free_form if free_form
42
+ args
43
+ end
44
+
45
+ def _module_klass(id)
46
+ raise "Unknown module #{id}" unless respond_to_missing? id, true
47
+ MODULES_MOD.const_get _klass_name(id)
48
+ end
49
+
50
+ def _block_args(&block)
51
+ return {} unless block
31
52
  # Delegate everything to the args builder and apply it to the module class we located
32
53
  module_builder = Args.new
33
- args = module_builder.evaluate(&block)
34
- args[:free_form] = free_form if free_form
35
- @result = module_klass.new(args)
36
- @result.validate!
54
+ module_builder._evaluate(&block)
37
55
  end
38
56
 
39
- def free_form_arg(module_args)
57
+ def _free_form_arg(module_args)
40
58
  if module_args.any?
41
59
  raise 'Expected only 1 argument for this type of module' if module_args.length > 1
42
60
  module_args[0]
@@ -40,7 +40,7 @@ module Ansible
40
40
  connection :local
41
41
  end
42
42
 
43
- def evaluate(*)
43
+ def _evaluate(*)
44
44
  tasks = super
45
45
  args = @playbook_args.merge({})
46
46
  # Don't want to trigger validation
@@ -15,7 +15,7 @@ module Ansible
15
15
  @task_args = {}
16
16
  end
17
17
 
18
- def evaluate(*)
18
+ def _evaluate(*)
19
19
  super
20
20
  args = {
21
21
  module: @module,
@@ -27,7 +27,7 @@ module Ansible
27
27
  end
28
28
 
29
29
  def become(*args)
30
- value = implicit_bool args
30
+ value = _implicit_bool args
31
31
  @task_args[:become] = value
32
32
  end
33
33
 
@@ -64,7 +64,7 @@ module Ansible
64
64
  end
65
65
 
66
66
  def ignore_errors(*args)
67
- value = implicit_bool args
67
+ value = _implicit_bool args
68
68
  @task_args[:ignore_errors] = value
69
69
  end
70
70
 
@@ -74,7 +74,7 @@ module Ansible
74
74
 
75
75
  private
76
76
 
77
- def process_method(id, *args, &block)
77
+ def _process_method(id, *args, &block)
78
78
  # only 1 module, so don't try and do this again
79
79
  raise "undefined local variable or method `#{id}'" if @module
80
80
  module_call_builder = ModuleCall.new
@@ -11,15 +11,15 @@ module Ansible
11
11
 
12
12
  def task(name, &block)
13
13
  task_builder = Task.new name
14
- @tasks << task_builder.evaluate(&block)
14
+ @tasks << task_builder._evaluate(&block)
15
15
  end
16
16
 
17
- def evaluate(*)
17
+ def _evaluate(*)
18
18
  super
19
19
  Models::Tasks.new tasks: @tasks
20
20
  end
21
21
 
22
- def process_method(id, *)
22
+ def _process_method(id, *)
23
23
  raise "undefined local variable or method `#{id}'"
24
24
  end
25
25
  end
@@ -22,10 +22,11 @@ module Ansible
22
22
  module_key = result.keys[0]
23
23
  args = result[module_key]
24
24
  free_form_arg = args.delete :free_form
25
- {
26
- module_key => free_form_arg,
27
- args: args
25
+ result = {
26
+ module_key => free_form_arg
28
27
  }
28
+ result[:args] = args if args.any?
29
+ result
29
30
  end
30
31
  end
31
32
  end
@@ -0,0 +1,33 @@
1
+ # See LICENSE.txt in root of repository
2
+
3
+ require 'rake/tasklib'
4
+ require 'ansible/ruby/rake/task_util'
5
+
6
+ module Ansible
7
+ module Ruby
8
+ module Rake
9
+ class Clean < ::Rake::TaskLib
10
+ include TaskUtil
11
+
12
+ # :reek:Attribute - Rake DSL gets ugly if we don't use a block
13
+ attr_accessor :files
14
+
15
+ def initialize(parameters = :default)
16
+ name, deps = parse_params parameters
17
+ yield self if block_given?
18
+ raise 'You did not supply any files!' unless files && [*files].any?
19
+ clean_files = yaml_filenames [*files]
20
+ task name => deps do
21
+ exist = clean_files.select { |file| File.exist? file }
22
+ if exist.any?
23
+ puts 'Cleaning ansible-ruby files'
24
+ rm_rf exist
25
+ else
26
+ puts 'No ansible-ruby files exist to clean'
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,43 @@
1
+ # See LICENSE.txt in root of repository
2
+ require 'rake/tasklib'
3
+ require 'ansible-ruby'
4
+ require 'ansible/ruby/rake/task_util'
5
+
6
+ module Ansible
7
+ module Ruby
8
+ module Rake
9
+ class Compile < ::Rake::TaskLib
10
+ include TaskUtil
11
+
12
+ # :reek:Attribute - Rake DSL gets ugly if we don't use a block
13
+ attr_accessor :files
14
+
15
+ def initialize(parameters = :default)
16
+ self.class.load_rule
17
+ name, deps = parse_params parameters
18
+ yield self if block_given?
19
+ raise 'You did not supply any files!' unless files && [*files].any?
20
+ deps ||= []
21
+ yml_filenames = yaml_filenames([*files])
22
+ deps = [*deps] + yml_filenames
23
+ task name => deps
24
+ end
25
+
26
+ class << self
27
+ def load_rule
28
+ return if @rule_done
29
+ ::Rake.application.create_rule '.yml' => '.rb' do |filename|
30
+ puts "Updating Ansible file #{filename.name} from #{filename.source}..."
31
+ ruby = File.read filename.source
32
+ playbook_builder = Ansible::Ruby::DslBuilders::FileLevel.new
33
+ playbook = playbook_builder._evaluate ruby
34
+ yml = Ansible::Ruby::Serializer.serialize playbook.to_h
35
+ File.write filename.name, yml
36
+ end
37
+ @rule_done = true
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,60 @@
1
+ require 'rake/tasklib'
2
+ require 'ansible-ruby'
3
+ require 'ansible/ruby/rake/task_util'
4
+ require 'ansible/ruby/rake/compile'
5
+ require 'ansible/ruby/rake/clean'
6
+
7
+ module Ansible
8
+ module Ruby
9
+ module Rake
10
+ class Execute < ::Rake::TaskLib
11
+ include TaskUtil
12
+
13
+ # :reek:Attribute - Rake DSL gets ugly if we don't use a block
14
+ attr_accessor :playbooks
15
+ # :reek:Attribute - Rake DSL gets ugly if we don't use a block
16
+ attr_accessor :options
17
+
18
+ def initialize(parameters = :default)
19
+ name, deps = parse_params parameters
20
+ yield self if block_given?
21
+ raise 'You did not supply any playbooks!' unless playbooks.any?
22
+ deps ||= []
23
+ compile_task_name = "#{name}_compile".to_sym
24
+ deps = [*deps] << compile_task_name
25
+ playbook_yml_files = yaml_filenames playbooks
26
+ task name => deps do
27
+ flat = flat_options
28
+ flat += ' ' unless flat.empty?
29
+ sh "ansible-playbook #{flat}#{playbook_yml_files.join ' '}"
30
+ end
31
+ symbol = name.inspect.to_s
32
+ desc "Compiles YAML files for #{symbol} task"
33
+ compiled_files = playbooks + role_task_files
34
+ Compile.new compile_task_name do |compile_task|
35
+ compile_task.files = compiled_files
36
+ end
37
+ desc "Cleans YAML files for #{symbol} task"
38
+ Clean.new "#{name}_clean".to_sym do |clean_task|
39
+ clean_task.files = compiled_files
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def playbooks
46
+ [*@playbooks]
47
+ end
48
+
49
+ def role_task_files
50
+ FileList['roles/*/tasks/**/*.rb']
51
+ end
52
+
53
+ def flat_options
54
+ array = [*options] << ENV['ANSIBLE_OPTS']
55
+ array.compact.join ' '
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,25 @@
1
+ # See LICENSE.txt for license
2
+ module Ansible
3
+ module Ruby
4
+ module Rake
5
+ module TaskUtil
6
+ def yaml_filenames(ruby_files)
7
+ ruby_files.map { |file| file.sub(/\.[^.]+\z/, '.yml') }
8
+ end
9
+
10
+ def parse_params(parameters)
11
+ deps = nil
12
+ name = case parameters
13
+ when Hash
14
+ name = parameters.keys[0]
15
+ deps = parameters[name]
16
+ name
17
+ else
18
+ parameters
19
+ end
20
+ [name, deps]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,2 @@
1
+ require 'ansible/ruby/rake/compile'
2
+ require 'ansible/ruby/rake/execute'
@@ -1,5 +1,5 @@
1
1
  module Ansible
2
2
  module Ruby
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ansible-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Wied
@@ -62,13 +62,13 @@ files:
62
62
  - lib/ansible/ruby/models/tasks.rb
63
63
  - lib/ansible/ruby/models/type_generic.rb
64
64
  - lib/ansible/ruby/models/type_validator.rb
65
+ - lib/ansible/ruby/modules/all.rb
65
66
  - lib/ansible/ruby/modules/base.rb
66
67
  - lib/ansible/ruby/modules/custom/commands/command.rb
67
68
  - lib/ansible/ruby/modules/custom/commands/raw.rb
68
69
  - lib/ansible/ruby/modules/custom/commands/script.rb
69
70
  - lib/ansible/ruby/modules/custom/commands/shell.rb
70
71
  - lib/ansible/ruby/modules/custom/free_form.rb
71
- - lib/ansible/ruby/modules/generated.rb
72
72
  - lib/ansible/ruby/modules/generated/core/cloud/amazon/cloudformation.rb
73
73
  - lib/ansible/ruby/modules/generated/core/cloud/amazon/ec2.rb
74
74
  - lib/ansible/ruby/modules/generated/core/cloud/amazon/ec2_ami.rb
@@ -636,7 +636,11 @@ files:
636
636
  - lib/ansible/ruby/modules/generated/extras/windows/win_updates.rb
637
637
  - lib/ansible/ruby/modules/generated/extras/windows/win_uri.rb
638
638
  - lib/ansible/ruby/modules/generated/extras/windows/win_webpicmd.rb
639
- - lib/ansible/ruby/rake/task.rb
639
+ - lib/ansible/ruby/rake/clean.rb
640
+ - lib/ansible/ruby/rake/compile.rb
641
+ - lib/ansible/ruby/rake/execute.rb
642
+ - lib/ansible/ruby/rake/task_util.rb
643
+ - lib/ansible/ruby/rake/tasks.rb
640
644
  - lib/ansible/ruby/serializer.rb
641
645
  - lib/ansible/ruby/version.rb
642
646
  homepage: https://github.com/wied03/ansible-ruby
@@ -1,74 +0,0 @@
1
- require 'rake/tasklib'
2
- require 'ansible-ruby'
3
-
4
- module Ansible
5
- module Ruby
6
- module Rake
7
- class Task < ::Rake::TaskLib
8
- # :reek:Attribute - Rake DSL gets ugly if we don't use a block
9
- attr_accessor :playbooks
10
- # :reek:Attribute - Rake DSL gets ugly if we don't use a block
11
- attr_accessor :options
12
-
13
- def initialize(parameters = :default)
14
- self.class.load_rule
15
- name, deps = parse_params parameters
16
- yield self if block_given?
17
- raise 'You did not supply any playbooks!' unless playbooks && [*playbooks].any?
18
- deps ||= []
19
- playbook_yml_files = yaml_filenames([*playbooks])
20
- role_task_yaml_files = yaml_filenames role_task_files
21
- deps = [*deps] + (playbook_yml_files + role_task_yaml_files)
22
- task name => deps do
23
- flat = flat_options
24
- flat += ' ' unless flat.empty?
25
- sh "ansible-playbook #{flat}#{playbook_yml_files.join ' '}"
26
- end
27
- end
28
-
29
- private
30
-
31
- def flat_options
32
- array = [*options] << ENV['ANSIBLE_OPTS']
33
- array.compact.join ' '
34
- end
35
-
36
- class << self
37
- def load_rule
38
- return if @rule_done
39
- ::Rake.application.create_rule '.yml' => '.rb' do |filename|
40
- puts "Updating Ansible file #{filename.name} from #{filename.source}..."
41
- ruby = File.read filename.source
42
- playbook_builder = Ansible::Ruby::DslBuilders::FileLevel.new
43
- playbook = playbook_builder.evaluate ruby
44
- yml = Ansible::Ruby::Serializer.serialize playbook.to_h
45
- File.write filename.name, yml
46
- end
47
- @rule_done = true
48
- end
49
- end
50
-
51
- def yaml_filenames(ruby_files)
52
- ruby_files.map { |file| file.sub(/\.[^.]+\z/, '.yml') }
53
- end
54
-
55
- def role_task_files
56
- FileList['roles/*/tasks/**/*.rb']
57
- end
58
-
59
- def parse_params(parameters)
60
- deps = nil
61
- name = case parameters
62
- when Hash
63
- name = parameters.keys[0]
64
- deps = parameters[name]
65
- name
66
- else
67
- parameters
68
- end
69
- [name, deps]
70
- end
71
- end
72
- end
73
- end
74
- end