puppet-strings 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +12 -0
- data/Gemfile +14 -5
- data/JSON.md +41 -11
- data/README.md +66 -7
- data/Rakefile +99 -29
- data/lib/puppet-strings/json.rb +2 -0
- data/lib/puppet-strings/markdown.rb +2 -0
- data/lib/puppet-strings/markdown/data_type.rb +18 -0
- data/lib/puppet-strings/markdown/data_types.rb +41 -0
- data/lib/puppet-strings/markdown/function.rb +2 -2
- data/lib/puppet-strings/markdown/table_of_contents.rb +1 -0
- data/lib/puppet-strings/markdown/templates/data_type.erb +78 -0
- data/lib/puppet-strings/tasks/generate.rb +3 -2
- data/lib/puppet-strings/version.rb +1 -1
- data/lib/puppet-strings/yard.rb +10 -0
- data/lib/puppet-strings/yard/code_objects.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/class.rb +1 -1
- data/lib/puppet-strings/yard/code_objects/data_type.rb +80 -0
- data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +58 -0
- data/lib/puppet-strings/yard/code_objects/defined_type.rb +1 -1
- data/lib/puppet-strings/yard/code_objects/function.rb +3 -3
- data/lib/puppet-strings/yard/code_objects/plan.rb +1 -1
- data/lib/puppet-strings/yard/handlers.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +24 -0
- data/lib/puppet-strings/yard/handlers/ruby/base.rb +2 -2
- data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +236 -0
- data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +1 -3
- data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +2 -2
- data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +5 -6
- data/lib/puppet-strings/yard/parsers/json/parser.rb +1 -1
- data/lib/puppet-strings/yard/parsers/puppet/parser.rb +14 -7
- data/lib/puppet-strings/yard/parsers/puppet/statement.rb +25 -0
- data/lib/puppet-strings/yard/tags/overload_tag.rb +1 -1
- data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_data_type.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/fulldoc/html/setup.rb +9 -0
- data/lib/puppet-strings/yard/templates/default/layout/html/objects.erb +2 -0
- data/lib/puppet-strings/yard/templates/default/layout/html/setup.rb +18 -1
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/box_info.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/header.erb +1 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/note.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/overview.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/setup.rb +5 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/source.erb +12 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/summary.erb +4 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/todo.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/alias_of.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/box_info.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/header.erb +1 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/note.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/overview.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/setup.rb +17 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/source.erb +12 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/summary.erb +4 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/todo.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/tags/setup.rb +1 -0
- data/lib/puppet/face/strings.rb +3 -3
- data/spec/acceptance/emit_json_options_spec.rb +69 -0
- data/spec/acceptance/generate_markdown_spec.rb +13 -15
- data/spec/acceptance/running_strings_generate_spec.rb +78 -0
- data/spec/fixtures/acceptance/modules/test/metadata.json +5 -1
- data/spec/fixtures/acceptance/modules/test/types/elephant.pp +2 -0
- data/spec/fixtures/unit/markdown/output_with_data_types.md +553 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/spec_helper_acceptance.rb +52 -22
- data/spec/spec_helper_acceptance_local.rb +10 -0
- data/spec/unit/puppet-strings/describe_spec.rb +7 -7
- data/spec/unit/puppet-strings/json_spec.rb +23 -4
- data/spec/unit/puppet-strings/markdown/base_spec.rb +3 -3
- data/spec/unit/puppet-strings/markdown_spec.rb +84 -23
- data/spec/unit/puppet-strings/yard/code_objects/task_spec.rb +1 -1
- data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +4 -4
- data/spec/unit/puppet-strings/yard/handlers/puppet/class_handler_spec.rb +8 -8
- data/spec/unit/puppet-strings/yard/handlers/puppet/data_type_alias_handler_spec.rb +65 -0
- data/spec/unit/puppet-strings/yard/handlers/puppet/defined_type_handler_spec.rb +8 -8
- data/spec/unit/puppet-strings/yard/handlers/puppet/function_handler_spec.rb +13 -13
- data/spec/unit/puppet-strings/yard/handlers/ruby/data_type_handler_spec.rb +232 -0
- data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +36 -19
- data/spec/unit/puppet-strings/yard/handlers/ruby/provider_handler_spec.rb +26 -7
- data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +7 -7
- data/spec/unit/puppet-strings/yard/handlers/ruby/type_handler_spec.rb +26 -10
- data/spec/unit/puppet-strings/yard/parsers/json/task_statement_spec.rb +2 -2
- data/spec/unit/puppet-strings/yard/parsers/puppet/parser_spec.rb +42 -0
- data/spec/unit/puppet-strings/yard/util_spec.rb +1 -1
- metadata +35 -7
- data/spec/acceptance/emit_json_options.rb +0 -71
- data/spec/acceptance/lib/util.rb +0 -163
- data/spec/acceptance/running_strings_generate.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8a70d1194ec3d0f50cc7924ce43b3d996b08db414a31639d38135c90863b3163
|
4
|
+
data.tar.gz: 821fef3a3e096caa7a3a51024db23e18658baba2b25bf4f503a750952e8e3657
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 457119ac6a325f6c4f62923a6180b05d346b0e2d2b7e560b4cddfeda51f345284e98421abb46a68a2a3c0bd62933300394866d91247d69ef2b154667ffd91df3
|
7
|
+
data.tar.gz: db555eb951d97aa8ac62396693c9c9d317f4e361b4b9dd405d9b7d21d6ccda9f89beb70f292053e6f0440e02b6cf9fb2b8e5f9defb209a6920a7597337128834
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,18 @@
|
|
3
3
|
All significant changes to this repo will be summarized in this file.
|
4
4
|
|
5
5
|
|
6
|
+
## [v2.3.0](https://github.com/puppetlabs/puppet-strings/tree/v2.3.0) (2019-07-17)
|
7
|
+
|
8
|
+
[Full Changelog](https://github.com/puppetlabs/puppet-strings/compare/v2.2.0...v2.3.0)
|
9
|
+
|
10
|
+
Added
|
11
|
+
|
12
|
+
- Add Puppet Data Type documentation [\#199](https://github.com/puppetlabs/puppet-strings/pull/199) ([glennsarti](https://github.com/glennsarti))
|
13
|
+
|
14
|
+
Fixed
|
15
|
+
|
16
|
+
- \(PDOC-283\) Fix namespaced symbols [\#205](https://github.com/puppetlabs/puppet-strings/pull/205) ([glennsarti](https://github.com/glennsarti))
|
17
|
+
|
6
18
|
## [v2.2.0](https://github.com/puppetlabs/puppet-strings/tree/v2.2.0) (2019-04-05)
|
7
19
|
|
8
20
|
[Full Changelog](https://github.com/puppetlabs/puppet-strings/compare/v2.1.0...v2.2.0)
|
data/Gemfile
CHANGED
@@ -23,10 +23,8 @@ group :test do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
group :acceptance do
|
26
|
-
|
27
|
-
gem '
|
28
|
-
gem 'beaker-hostgenerator'
|
29
|
-
gem 'beaker-abs'
|
26
|
+
# Litmus has dependencies which require Ruby 2.5 (Puppet 6) or above.
|
27
|
+
gem 'puppet_litmus' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.5.0')
|
30
28
|
end
|
31
29
|
|
32
30
|
group :development do
|
@@ -35,4 +33,15 @@ group :development do
|
|
35
33
|
gem 'pry-byebug'
|
36
34
|
end
|
37
35
|
|
38
|
-
gem 'rubocop'
|
36
|
+
gem 'rubocop-rspec'
|
37
|
+
gem 'rubocop', '~> 0.57.2'
|
38
|
+
|
39
|
+
# Evaluate Gemfile.local if it exists
|
40
|
+
if File.exists? "#{__FILE__}.local"
|
41
|
+
eval(File.read("#{__FILE__}.local"), binding)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Evaluate ~/.gemfile if it exists
|
45
|
+
if File.exists?(File.join(Dir.home, '.gemfile'))
|
46
|
+
eval(File.read(File.join(Dir.home, '.gemfile')), binding)
|
47
|
+
end
|
data/JSON.md
CHANGED
@@ -9,17 +9,19 @@ puppet strings generate --format json
|
|
9
9
|
Document Schema
|
10
10
|
===============
|
11
11
|
|
12
|
-
At the top level, there are
|
13
|
-
|
14
|
-
| Document Key
|
15
|
-
|
|
16
|
-
| puppet_classes
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
At the top level, there are nine arrays in the JSON document:
|
13
|
+
|
14
|
+
| Document Key | Description |
|
15
|
+
| ----------------- | ----------------------------------------------------------------------------- |
|
16
|
+
| puppet_classes | The list of Puppet classes that were parsed. |
|
17
|
+
| data_types | The list of data types that were parsed. |
|
18
|
+
| data_type_aliases | | The list of data types that were parsed. |
|
19
|
+
| defined_types | The list of defined types that were parsed. |
|
20
|
+
| resource_types | The list of resource types that were parsed. |
|
21
|
+
| providers | The list of resource providers that were parsed. |
|
22
|
+
| puppet_functions | The list of Puppet functions (4.x, 4.x and Puppet language) that were parsed. |
|
23
|
+
| puppet_tasks | The list of Puppet tasks that were parsed. |
|
24
|
+
| puppet_plans | The list of Puppet plans that were parsed. |
|
23
25
|
|
24
26
|
Puppet Classes
|
25
27
|
--------------
|
@@ -36,6 +38,34 @@ Each entry in the `puppet_classes` list is an object with the following attribut
|
|
36
38
|
| defaults | The map of parameter names to default values. |
|
37
39
|
| source | The Puppet source code for the class. |
|
38
40
|
|
41
|
+
Data Types
|
42
|
+
----------
|
43
|
+
|
44
|
+
Each entry in the `data_types` list is an object with the following attributes:
|
45
|
+
|
46
|
+
| Attribute Key | Description |
|
47
|
+
| ------------- | ----------------------------------------------------------- |
|
48
|
+
| name | The name of the data type. |
|
49
|
+
| file | The file defining the data type. |
|
50
|
+
| line | The line where the data type is data. |
|
51
|
+
| docstring | The *DocString* object for the data type (see below). |
|
52
|
+
| defaults | The map of parameter names to default values. |
|
53
|
+
| source | The ruby source code for the data type. (Not Implemented) |
|
54
|
+
|
55
|
+
Data Type Aliases
|
56
|
+
-----------------
|
57
|
+
|
58
|
+
Each entry in the `data_type_aliases` list is an object with the following attributes:
|
59
|
+
|
60
|
+
| Attribute Key | Description |
|
61
|
+
| ------------- | ----------------------------------------------------------------- |
|
62
|
+
| name | The name of the data type. |
|
63
|
+
| file | The file defining the data type. |
|
64
|
+
| line | The line where the data type is defined. |
|
65
|
+
| docstring | The *DocString* object for the data type (see below). |
|
66
|
+
| alias_of | The actual type this is an alias of. |
|
67
|
+
| source | The Puppet source code for the data type alias. (Not Implemented) |
|
68
|
+
|
39
69
|
Defined Types
|
40
70
|
-------------
|
41
71
|
|
data/README.md
CHANGED
@@ -25,19 +25,33 @@ Puppet Strings generates documentation for Puppet code and extensions written in
|
|
25
25
|
### Requirements
|
26
26
|
|
27
27
|
* Ruby 2.1.9 or newer
|
28
|
-
* Puppet 4.0 or newer
|
29
|
-
* The `yard` Ruby gem
|
28
|
+
* Puppet 4.0.0 or newer
|
30
29
|
|
31
30
|
### Install Puppet Strings
|
32
31
|
|
33
|
-
|
34
|
-
1. Install the `puppet-strings` gem by running `gem install puppet-strings`
|
35
|
-
1. **Optional**: Set YARD options for Strings
|
32
|
+
Installation instructions vary slightly depending on how you have installed Puppet:
|
36
33
|
|
37
|
-
|
34
|
+
#### Installing Puppet Strings with [`puppet-agent`](https://puppet.com/docs/puppet/6.4/about_agent.html#what-puppet-agent-and-puppetserver-are) package
|
38
35
|
|
39
|
-
|
36
|
+
Install the `puppet-strings` gem into the `puppet-agent` environment:
|
40
37
|
|
38
|
+
```
|
39
|
+
sudo /opt/puppetlabs/puppet/bin/gem install puppet-strings
|
40
|
+
```
|
41
|
+
|
42
|
+
#### Installing Puppet Strings with standalone `puppet` gem
|
43
|
+
|
44
|
+
Install the `puppet-strings` gem into the same Ruby installation where you have installed the `puppet` gem:
|
45
|
+
|
46
|
+
```
|
47
|
+
gem install puppet-strings
|
48
|
+
```
|
49
|
+
|
50
|
+
### Configure Puppet Strings (Optional)
|
51
|
+
|
52
|
+
To use YARD options with Puppet Strings, specify a `.yardopts` file in the same directory in which you run `puppet strings`. Puppet Strings supports the Markdown format and automatically sets the YARD `markup` option to `markdown`.
|
53
|
+
|
54
|
+
To see a list of available YARD options, run `yard help doc`. For details about YARD options configuration, see the [YARD docs](http://www.rubydoc.info/gems/yard/file/docs/GettingStarted.md#config).
|
41
55
|
|
42
56
|
## Generating documentation with Puppet Strings
|
43
57
|
|
@@ -74,6 +88,51 @@ To run specs, run the `spec` rake task:
|
|
74
88
|
$ bundle install --path .bundle/gems
|
75
89
|
$ bundle exec rake spec
|
76
90
|
|
91
|
+
### Running Acceptance Tests
|
92
|
+
|
93
|
+
We are experimenting with a new tool for running acceptance tests. It's name is [puppet_litmus](https://github.com/puppetlabs/puppet_litmus) and replaces beaker as the test runner.
|
94
|
+
|
95
|
+
An example of running the acceptance tests locally with Docker:
|
96
|
+
|
97
|
+
1. Ensure [Docker](https://www.docker.com/products/docker-desktop) is installed and running.
|
98
|
+
|
99
|
+
2. Install Ruby gems. This step can be skipped if you have already followed the [Running Specs](#running-specs) instructions
|
100
|
+
|
101
|
+
``` text
|
102
|
+
$ bundle install --path .bundle/gems
|
103
|
+
```
|
104
|
+
|
105
|
+
3. Provision a docker container, in this case CentOS 7
|
106
|
+
|
107
|
+
``` text
|
108
|
+
$ bundle exec rake litmus:provision[docker, centos:7]
|
109
|
+
```
|
110
|
+
|
111
|
+
4. Install test items; Puppet Agent, our test module, and the puppet-strings gem built from this source code
|
112
|
+
|
113
|
+
``` text
|
114
|
+
$ bundle exec rake litmus:install_agent[puppet6]
|
115
|
+
$ bundle exec rake litmus:install_module_fixtures
|
116
|
+
$ bundle exec rake litmus:install_gems
|
117
|
+
```
|
118
|
+
|
119
|
+
5. Run the acceptance tests. These tests can be run more than once without the need to run the provisioning steps again
|
120
|
+
|
121
|
+
``` text
|
122
|
+
$ bundle exec rake litmus:acceptance:parallel
|
123
|
+
```
|
124
|
+
|
125
|
+
6. Remove any test containers
|
126
|
+
|
127
|
+
``` text
|
128
|
+
$ bundle exec rake litmus:tear_down
|
129
|
+
```
|
130
|
+
|
131
|
+
The [Litmus Wiki](https://github.com/puppetlabs/puppet_litmus/wiki) contains more indepth information about Litmus. There is also a tutorial on using Litmus with an example [Puppet Module](https://github.com/puppetlabs/puppet_litmus/wiki/Tutorial:-use-Litmus-to-execute-acceptance-tests-with-a-sample-module-(MoTD)#install-the-necessary-gems-for-the-module)
|
132
|
+
|
133
|
+
|
134
|
+
An example of run the acceptance tests follow the instructions [here].
|
135
|
+
|
77
136
|
## Support
|
78
137
|
|
79
138
|
Please log tickets and issues in our [JIRA tracker][JIRA]. A [mailing list](https://groups.google.com/forum/?fromgroups#!forum/puppet-users) is available for asking questions and getting help from others.
|
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
+
require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
|
2
|
+
require 'puppetlabs_spec_helper/tasks/fixtures'
|
1
3
|
require 'bundler/gem_tasks'
|
2
|
-
#require 'puppetlabs_spec_helper/rake_tasks'
|
3
4
|
require 'puppet-lint/tasks/puppet-lint'
|
4
5
|
|
5
6
|
require 'rspec/core/rake_task'
|
@@ -23,45 +24,114 @@ task :validate do
|
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
|
27
|
-
|
27
|
+
namespace :litmus do
|
28
|
+
# Install the puppet module fixture on a collection of nodes
|
29
|
+
#
|
30
|
+
# @param :target_node_name [Array] nodes on which to install a puppet module for testing.
|
31
|
+
desc 'install_module_fixtures - build and install module fixtures'
|
32
|
+
task :install_module_fixtures, [:target_node_name] do |_task, args|
|
33
|
+
inventory_hash = inventory_hash_from_inventory_file
|
34
|
+
target_nodes = find_targets(inventory_hash, args[:target_node_name])
|
35
|
+
if target_nodes.empty?
|
36
|
+
puts 'No targets found'
|
37
|
+
exit 0
|
38
|
+
end
|
39
|
+
include BoltSpec::Run
|
40
|
+
require 'pdk/module/build'
|
28
41
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
42
|
+
module_fixture_dir = File.expand_path(File.join(File.dirname(__FILE__), 'spec', 'fixtures', 'acceptance', 'modules', 'test'))
|
43
|
+
module_tar = nil
|
44
|
+
Dir.chdir(module_fixture_dir) do
|
45
|
+
opts = {}
|
46
|
+
opts[:force] = true
|
47
|
+
builder = PDK::Module::Build.new(opts)
|
48
|
+
module_tar = builder.build
|
49
|
+
puts 'Built'
|
50
|
+
module_tar = Dir.glob('pkg/*.tar.gz').max_by { |f| File.mtime(f) }
|
51
|
+
raise "Unable to find package in 'pkg/*.tar.gz'" if module_tar.nil?
|
52
|
+
module_tar = File.expand_path(module_tar)
|
53
|
+
end
|
37
54
|
|
38
|
-
|
39
|
-
|
40
|
-
|
55
|
+
target_string = if args[:target_node_name].nil?
|
56
|
+
'all'
|
57
|
+
else
|
58
|
+
args[:target_node_name]
|
59
|
+
end
|
60
|
+
# TODO: Currently this is Linux only
|
61
|
+
tmp_path = '/tmp/'
|
62
|
+
run_local_command("bundle exec bolt file upload #{module_tar} #{tmp_path}#{File.basename(module_tar)} --nodes #{target_string} --inventoryfile inventory.yaml")
|
63
|
+
install_module_command = "puppet module install #{tmp_path}#{File.basename(module_tar)}"
|
64
|
+
result = run_command(install_module_command, target_nodes, config: nil, inventory: inventory_hash)
|
65
|
+
if result.is_a?(Array)
|
66
|
+
result.each do |node|
|
67
|
+
puts "#{node['node']} failed #{node['result']}" if node['status'] != 'success'
|
68
|
+
end
|
69
|
+
else
|
70
|
+
raise "Failed trying to run '#{install_module_command}' against inventory."
|
71
|
+
end
|
72
|
+
puts 'Installed'
|
41
73
|
end
|
42
74
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
75
|
+
def install_remote_gem(gem_name, target_nodes, inventory_hash)
|
76
|
+
# TODO: Currently this is Linux only
|
77
|
+
install_command = "/opt/puppetlabs/puppet/bin/gem install #{gem_name}"
|
78
|
+
result = run_command(install_command, target_nodes, config: nil, inventory: inventory_hash)
|
79
|
+
if result.is_a?(Array)
|
80
|
+
result.each do |node|
|
81
|
+
puts "#{node['node']} failed #{node['result']}" if node['status'] != 'success'
|
82
|
+
end
|
83
|
+
else
|
84
|
+
raise "Failed trying to run '#{install_command}' against inventory."
|
85
|
+
end
|
49
86
|
end
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
87
|
+
|
88
|
+
# Install the gem under test and required fixture on a collection of nodes
|
89
|
+
#
|
90
|
+
# @param :target_node_name [Array] nodes on which to install a puppet module for testing.
|
91
|
+
desc 'install_gems - build and install module fixtures'
|
92
|
+
task :install_gems, [:target_node_name] do |_task, args|
|
93
|
+
inventory_hash = inventory_hash_from_inventory_file
|
94
|
+
target_nodes = find_targets(inventory_hash, args[:target_node_name])
|
95
|
+
if target_nodes.empty?
|
96
|
+
puts 'No targets found'
|
97
|
+
exit 0
|
98
|
+
end
|
99
|
+
include BoltSpec::Run
|
100
|
+
|
101
|
+
# Build the gem
|
102
|
+
`gem build puppet-strings.gemspec --quiet`
|
103
|
+
result = $CHILD_STATUS
|
104
|
+
raise "Unable to build the puppet-strings gem. Returned exit code #{result.exitstatus}" unless result.exitstatus.zero?
|
105
|
+
puts 'Built'
|
106
|
+
# Find the gem build artifact
|
107
|
+
gem_tar = Dir.glob('puppet-strings-*.gem').max_by { |f| File.mtime(f) }
|
108
|
+
raise "Unable to find package in 'puppet-strings-*.gem'" if gem_tar.nil?
|
109
|
+
gem_tar = File.expand_path(gem_tar)
|
110
|
+
|
111
|
+
target_string = if args[:target_node_name].nil?
|
112
|
+
'all'
|
113
|
+
else
|
114
|
+
args[:target_node_name]
|
115
|
+
end
|
116
|
+
# TODO: Currently this is Linux only
|
117
|
+
tmp_path = '/tmp/'
|
118
|
+
run_local_command("bundle exec bolt file upload #{gem_tar} #{tmp_path}#{File.basename(gem_tar)} --nodes #{target_string} --inventoryfile inventory.yaml")
|
119
|
+
|
120
|
+
|
121
|
+
# Install dependent gems
|
122
|
+
install_remote_gem('yard', target_nodes, inventory_hash)
|
123
|
+
install_remote_gem('rgen', target_nodes, inventory_hash)
|
124
|
+
# Install puppet-strings
|
125
|
+
install_remote_gem(tmp_path + File.basename(gem_tar), target_nodes, inventory_hash)
|
126
|
+
puts 'Installed'
|
58
127
|
end
|
59
128
|
end
|
60
129
|
|
61
130
|
task(:rubocop) do
|
62
131
|
require 'rubocop'
|
63
132
|
cli = RuboCop::CLI.new
|
64
|
-
cli.run(%w(-D -f s))
|
133
|
+
result = cli.run(%w(-D -f s))
|
134
|
+
abort unless result == RuboCop::CLI::STATUS_SUCCESS
|
65
135
|
end
|
66
136
|
|
67
137
|
#### CHANGELOG ####
|
data/lib/puppet-strings/json.rb
CHANGED
@@ -8,6 +8,8 @@ module PuppetStrings::Json
|
|
8
8
|
def self.render(file = nil)
|
9
9
|
document = {
|
10
10
|
puppet_classes: YARD::Registry.all(:puppet_class).sort_by!(&:name).map!(&:to_hash),
|
11
|
+
data_types: YARD::Registry.all(:puppet_data_type).sort_by!(&:name).map!(&:to_hash),
|
12
|
+
data_type_aliases: YARD::Registry.all(:puppet_data_type_alias).sort_by!(&:name).map!(&:to_hash),
|
11
13
|
defined_types: YARD::Registry.all(:puppet_defined_type).sort_by!(&:name).map!(&:to_hash),
|
12
14
|
resource_types: YARD::Registry.all(:puppet_type).sort_by!(&:name).map!(&:to_hash),
|
13
15
|
providers: YARD::Registry.all(:puppet_provider).sort_by!(&:name).map!(&:to_hash),
|
@@ -5,6 +5,7 @@ module PuppetStrings::Markdown
|
|
5
5
|
require_relative 'markdown/puppet_classes'
|
6
6
|
require_relative 'markdown/functions'
|
7
7
|
require_relative 'markdown/defined_types'
|
8
|
+
require_relative 'markdown/data_types'
|
8
9
|
require_relative 'markdown/resource_types'
|
9
10
|
require_relative 'markdown/puppet_tasks'
|
10
11
|
require_relative 'markdown/puppet_plans'
|
@@ -20,6 +21,7 @@ module PuppetStrings::Markdown
|
|
20
21
|
final << PuppetStrings::Markdown::DefinedTypes.render
|
21
22
|
final << PuppetStrings::Markdown::ResourceTypes.render
|
22
23
|
final << PuppetStrings::Markdown::Functions.render
|
24
|
+
final << PuppetStrings::Markdown::DataTypes.render
|
23
25
|
final << PuppetStrings::Markdown::PuppetTasks.render
|
24
26
|
final << PuppetStrings::Markdown::PuppetPlans.render
|
25
27
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'puppet-strings/markdown/base'
|
2
|
+
|
3
|
+
module PuppetStrings::Markdown
|
4
|
+
# This class encapsualtes ruby data types and puppet type aliases
|
5
|
+
class DataType < Base
|
6
|
+
attr_reader :alias_of
|
7
|
+
|
8
|
+
def initialize(registry)
|
9
|
+
@template = 'data_type.erb'
|
10
|
+
super(registry, 'data type')
|
11
|
+
@alias_of = registry[:alias_of] unless registry[:alias_of].nil?
|
12
|
+
end
|
13
|
+
|
14
|
+
def render
|
15
|
+
super(@template)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative 'data_type'
|
2
|
+
|
3
|
+
module PuppetStrings::Markdown
|
4
|
+
module DataTypes
|
5
|
+
|
6
|
+
# @return [Array] list of data types
|
7
|
+
def self.in_dtypes
|
8
|
+
arr = YARD::Registry.all(:puppet_data_type).map!(&:to_hash)
|
9
|
+
arr.concat(YARD::Registry.all(:puppet_data_type_alias).map!(&:to_hash))
|
10
|
+
|
11
|
+
arr.sort! { |a,b| a[:name] <=> b[:name] }
|
12
|
+
arr.map! { |a| PuppetStrings::Markdown::DataType.new(a) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.contains_private?
|
16
|
+
result = false
|
17
|
+
unless in_dtypes.nil?
|
18
|
+
in_dtypes.find { |type| type.private? }.nil? ? false : true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.render
|
23
|
+
final = in_dtypes.length > 0 ? "## Data types\n\n" : ""
|
24
|
+
in_dtypes.each do |type|
|
25
|
+
final << type.render unless type.private?
|
26
|
+
end
|
27
|
+
final
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def self.toc_info
|
32
|
+
final = ["Data types"]
|
33
|
+
|
34
|
+
in_dtypes.each do |type|
|
35
|
+
final.push(type.toc_info)
|
36
|
+
end
|
37
|
+
|
38
|
+
final
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|