puppet-retrospec 1.4.1 → 1.5.0
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 +4 -4
- data/CHANGELOG.md +2 -0
- data/Gemfile.lock +2 -2
- data/README.md +8 -0
- data/lib/retrospec/plugins/v1/plugin/generators/task_generator.rb +116 -0
- data/lib/retrospec/plugins/v1/plugin/puppet.rb +11 -2
- data/lib/retrospec/plugins/v1/plugin/version.rb +1 -1
- metadata +26 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56ddee7e316cf7e2074a1f6ca6cdc34561baaa31
|
4
|
+
data.tar.gz: 7bc02f19562beb2981babe6bd17949b51901f942
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79f92a3078d2456d98fa5be550700b9d4001862340ded0cf610ec1192c9e7613153f3099e229bb232d66390cc353d1d6de3f983d5df784c39fd5f507c686ad2b
|
7
|
+
data.tar.gz: c9acb7246d9bbecaa52e851333678f0e25a76fdb3ece6d2751e8bd2b418775ddcddcebc28c3a06b8830cb23c2e13226072ae03481f3499d1be3d909547c40564
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -50,6 +50,14 @@ TOC Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
|
|
50
50
|
[](http://badge.fury.io/rb/puppet-retrospec)
|
51
51
|
|
52
52
|
## News
|
53
|
+
### 10/11/17
|
54
|
+
Adds the ability to generate puppet bolt tasks, parameters with some predefined language types
|
55
|
+
|
56
|
+
`retrospec puppet new_task -n reboot -t bash -p "name, count, amount"`
|
57
|
+
|
58
|
+
Generates the parameters file and task file.
|
59
|
+
|
60
|
+
|
53
61
|
### 5/10/17
|
54
62
|
Adds ability to create module data. With the release of puppet 4.9 we can now use module data.
|
55
63
|
Use the module_data generater to auto setup module data in your puppet module. `retrospec puppet module_data`
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Retrospec
|
4
|
+
module Puppet
|
5
|
+
module Generators
|
6
|
+
class TaskGenerator < Retrospec::Puppet::Generators::BaseGenerator
|
7
|
+
EXT_TYPES = {
|
8
|
+
'ruby' => 'rb',
|
9
|
+
'generic' => 'generic',
|
10
|
+
'python' => 'py',
|
11
|
+
'powershell' => 'ps1',
|
12
|
+
'bash' => 'sh',
|
13
|
+
'node' => 'js'
|
14
|
+
}
|
15
|
+
|
16
|
+
# retrospec will initilalize this class so its up to you
|
17
|
+
# to set any additional variables you need to get the job done.
|
18
|
+
def initialize(module_path, spec_object = {})
|
19
|
+
super
|
20
|
+
@plural_name = 'tasks'
|
21
|
+
@singular_name = 'task'
|
22
|
+
end
|
23
|
+
|
24
|
+
def shebang
|
25
|
+
"#!/usr/bin/env #{task_type}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def task_params
|
29
|
+
config_data[:task_params].gsub(/\s/, '').split(",")
|
30
|
+
end
|
31
|
+
|
32
|
+
def task_params_output
|
33
|
+
params = {}
|
34
|
+
task_params.each_with_object({}) do |item, obj|
|
35
|
+
obj["description"] = "The description of the #{item} parameter"
|
36
|
+
obj["type"] = "String"
|
37
|
+
params[item] = obj
|
38
|
+
end
|
39
|
+
params
|
40
|
+
end
|
41
|
+
|
42
|
+
def task_type
|
43
|
+
config_data[:task_type]
|
44
|
+
end
|
45
|
+
|
46
|
+
def run
|
47
|
+
files = []
|
48
|
+
files << generate_task_files
|
49
|
+
files
|
50
|
+
end
|
51
|
+
|
52
|
+
def task_filepath
|
53
|
+
ext = EXT_TYPES.fetch(task_type, task_type)
|
54
|
+
File.join(module_path, 'tasks', "#{item_name}.#{ext}")
|
55
|
+
end
|
56
|
+
|
57
|
+
def task_params_filepath
|
58
|
+
File.join(module_path, 'tasks', "#{item_name}.json")
|
59
|
+
end
|
60
|
+
|
61
|
+
def item_spec_path
|
62
|
+
File.join(spec_path, plural_name, "#{item_name}_spec.rb")
|
63
|
+
end
|
64
|
+
|
65
|
+
def enable_beaker_tasks?
|
66
|
+
false
|
67
|
+
end
|
68
|
+
|
69
|
+
def generate_task_files
|
70
|
+
context.task_type = task_type
|
71
|
+
context.shebang = shebang
|
72
|
+
context.task_params_output = task_params_output
|
73
|
+
context.task_params = task_params
|
74
|
+
parameter_template = File.join(template_dir, 'task_parameters.json.retrospec.erb')
|
75
|
+
task_template = Dir.glob(File.join(template_dir, 'types', task_type, '*')).first
|
76
|
+
unless task_template
|
77
|
+
task_template = Dir.glob(File.join(template_dir, 'types', 'task.retrospec.erb')).first
|
78
|
+
end
|
79
|
+
files = []
|
80
|
+
files << safe_create_template_file(task_filepath, task_template, context)
|
81
|
+
files << safe_create_template_file(task_params_filepath, parameter_template, context)
|
82
|
+
files
|
83
|
+
end
|
84
|
+
|
85
|
+
# used to display subcommand options to the cli
|
86
|
+
# the global options are passed in for your usage
|
87
|
+
# http://trollop.rubyforge.org
|
88
|
+
# all options here are available in the config passed into config object
|
89
|
+
# returns the parameters
|
90
|
+
def self.run_cli(global_opts, args=ARGV)
|
91
|
+
task_types = %w(bash generic ruby python node powershell)
|
92
|
+
task_type = global_opts['plugins::puppet::default_task_type'] || 'bash'
|
93
|
+
sub_command_opts = Trollop.options(args) do
|
94
|
+
banner <<-EOS
|
95
|
+
Creates a new puppet bolt task for your module
|
96
|
+
|
97
|
+
Example: retrospec puppet new_task -n reboot -p "name, ttl, message"
|
98
|
+
|
99
|
+
EOS
|
100
|
+
opt :name, "The name of the task you wish to create", :type => :string, :required => true, :short => '-n'
|
101
|
+
opt :task_params, "The task parameter names separated by commas", :short => '-p', :type => :string, :required => false, default: "name"
|
102
|
+
opt :task_type, "The task type of the task (#{task_types.join(', ')})", :type => :string, :required => false, :short => '-t',
|
103
|
+
:default => task_type
|
104
|
+
|
105
|
+
end
|
106
|
+
unless sub_command_opts[:name]
|
107
|
+
Trollop.educate
|
108
|
+
exit 1
|
109
|
+
end
|
110
|
+
plugin_data = global_opts.merge(sub_command_opts)
|
111
|
+
plugin_data
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -92,7 +92,7 @@ module Retrospec
|
|
92
92
|
scm_branch = ENV['RETROSPEC_PUPPET_SCM_BRANCH'] || plugin_config['plugins::puppet::templates::ref'] || 'master'
|
93
93
|
beaker_tests = plugin_config['plugins::puppet::enable_beaker_tests'] || false
|
94
94
|
# a list of subcommands for this plugin
|
95
|
-
sub_commands = %w(new_module new_fact new_type new_provider new_function new_report module_data)
|
95
|
+
sub_commands = %w(new_module new_task new_fact new_type new_provider new_function new_report module_data)
|
96
96
|
if sub_commands.count > 0
|
97
97
|
sub_command_help = "Subcommands:\n #{sub_commands.join("\n ")}\n"
|
98
98
|
else
|
@@ -106,7 +106,6 @@ Generates puppet rspec test code and puppet module components.
|
|
106
106
|
#{sub_command_help}
|
107
107
|
|
108
108
|
EOS
|
109
|
-
|
110
109
|
opt :template_dir, 'Path to templates directory (only for overriding Retrospec templates)', :type => :string,
|
111
110
|
:required => false, :default => template_dir
|
112
111
|
opt :scm_url, 'SCM url for retrospec templates', :type => :string, :required => false,
|
@@ -135,6 +134,8 @@ Generates puppet rspec test code and puppet module components.
|
|
135
134
|
plugin.new_type(plugin_data, args)
|
136
135
|
when :new_function
|
137
136
|
plugin.new_function(plugin_data, args)
|
137
|
+
when :new_task
|
138
|
+
plugin.new_task(plugin_data, args)
|
138
139
|
when :new_fact
|
139
140
|
plugin.new_fact(plugin_data, args)
|
140
141
|
when :new_provider
|
@@ -165,6 +166,14 @@ Generates puppet rspec test code and puppet module components.
|
|
165
166
|
plugin_data
|
166
167
|
end
|
167
168
|
|
169
|
+
def new_task(config, args)
|
170
|
+
plugin_data = Retrospec::Puppet::Generators::TaskGenerator.run_cli(config, args)
|
171
|
+
plugin_data[:puppet_context] = context
|
172
|
+
t = Retrospec::Puppet::Generators::TaskGenerator.new(plugin_data[:module_path], plugin_data)
|
173
|
+
t.run
|
174
|
+
post_init
|
175
|
+
end
|
176
|
+
|
168
177
|
def module_data(module_path, config, args=[])
|
169
178
|
plugin_data = Retrospec::Puppet::Generators::ModuleDataGenerator.run_cli(config, args)
|
170
179
|
plugin_data[:puppet_context] = context
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-retrospec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Osman
|
@@ -14,84 +14,84 @@ dependencies:
|
|
14
14
|
name: trollop
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
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: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: retrospec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.6.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.6.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: awesome_print
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: facets
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '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: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdoc
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3.12'
|
76
76
|
type: :development
|
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: '3.12'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: Retrofits and generates valid puppet rspec test code to existing modules
|
@@ -103,15 +103,15 @@ extra_rdoc_files:
|
|
103
103
|
- LICENSE
|
104
104
|
- README.md
|
105
105
|
files:
|
106
|
-
- .dockerignore
|
107
|
-
- .document
|
108
|
-
- .gitignore
|
109
|
-
- .gitlab-ci.yml
|
110
|
-
- .overcommit.yml
|
111
|
-
- .release_me.yaml
|
112
|
-
- .rspec
|
113
|
-
- .rubocop.yml
|
114
|
-
- .rubocop_todo.yml
|
106
|
+
- ".dockerignore"
|
107
|
+
- ".document"
|
108
|
+
- ".gitignore"
|
109
|
+
- ".gitlab-ci.yml"
|
110
|
+
- ".overcommit.yml"
|
111
|
+
- ".release_me.yaml"
|
112
|
+
- ".rspec"
|
113
|
+
- ".rubocop.yml"
|
114
|
+
- ".rubocop_todo.yml"
|
115
115
|
- CHANGELOG.md
|
116
116
|
- DEVELOPMENT.md
|
117
117
|
- Dockerfile
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/retrospec/plugins/v1/plugin/generators/serializers/rspec_dumper.rb
|
144
144
|
- lib/retrospec/plugins/v1/plugin/generators/serializers/rspec_dumper_full.rb
|
145
145
|
- lib/retrospec/plugins/v1/plugin/generators/serializers/schema_dumper.rb
|
146
|
+
- lib/retrospec/plugins/v1/plugin/generators/task_generator.rb
|
146
147
|
- lib/retrospec/plugins/v1/plugin/generators/type_generator.rb
|
147
148
|
- lib/retrospec/plugins/v1/plugin/helpers.rb
|
148
149
|
- lib/retrospec/plugins/v1/plugin/puppet.rb
|
@@ -1760,17 +1761,17 @@ require_paths:
|
|
1760
1761
|
- lib
|
1761
1762
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1762
1763
|
requirements:
|
1763
|
-
- -
|
1764
|
+
- - ">="
|
1764
1765
|
- !ruby/object:Gem::Version
|
1765
1766
|
version: '0'
|
1766
1767
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1767
1768
|
requirements:
|
1768
|
-
- -
|
1769
|
+
- - ">="
|
1769
1770
|
- !ruby/object:Gem::Version
|
1770
1771
|
version: '0'
|
1771
1772
|
requirements: []
|
1772
1773
|
rubyforge_project:
|
1773
|
-
rubygems_version: 2.
|
1774
|
+
rubygems_version: 2.6.11
|
1774
1775
|
signing_key:
|
1775
1776
|
specification_version: 4
|
1776
1777
|
summary: Generates puppet rspec test code based on the classes and defines inside
|