puppet-herald 0.1.1 → 0.2.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.
Files changed (65) hide show
  1. checksums.yaml +15 -7
  2. data/.rubocop.yml +31 -0
  3. data/.rubocop_todo.yml +6 -0
  4. data/.travis.yml +7 -7
  5. data/Gemfile +5 -9
  6. data/README.md +152 -16
  7. data/Rakefile +67 -6
  8. data/bin/puppet-herald +1 -1
  9. data/config.ru +2 -2
  10. data/db/migrate/20141211165540_create_nodes.rb +5 -3
  11. data/db/migrate/20141211171305_create_reports.rb +12 -10
  12. data/db/migrate/20141211171326_create_log_entries.rb +9 -7
  13. data/db/schema.rb +24 -26
  14. data/lib/puppet-herald.rb +59 -21
  15. data/lib/puppet-herald/app/api.rb +111 -0
  16. data/lib/puppet-herald/app/configuration.rb +70 -0
  17. data/lib/puppet-herald/app/frontend.rb +61 -0
  18. data/lib/puppet-herald/{views → app/views}/app.erb +5 -8
  19. data/lib/puppet-herald/{views → app/views}/err500.erb +1 -4
  20. data/lib/puppet-herald/application.rb +27 -0
  21. data/lib/puppet-herald/cli.rb +66 -45
  22. data/lib/puppet-herald/client.rb +33 -0
  23. data/lib/puppet-herald/database.rb +84 -40
  24. data/lib/puppet-herald/javascript.rb +23 -17
  25. data/lib/puppet-herald/models/log-entry.rb +10 -3
  26. data/lib/puppet-herald/models/node.rb +15 -5
  27. data/lib/puppet-herald/models/report.rb +70 -63
  28. data/lib/puppet-herald/public/app.js +9 -8
  29. data/lib/puppet-herald/public/components/directives/status-button.html +1 -1
  30. data/lib/puppet-herald/public/components/directives/status-button.js +5 -3
  31. data/lib/puppet-herald/public/components/filters/filters.js +9 -4
  32. data/lib/puppet-herald/public/components/page.js +34 -0
  33. data/lib/puppet-herald/public/node/node.html +3 -1
  34. data/lib/puppet-herald/public/node/node.js +7 -4
  35. data/lib/puppet-herald/public/nodes/nodes.js +3 -2
  36. data/lib/puppet-herald/public/report/report.html +4 -1
  37. data/lib/puppet-herald/public/report/report.js +5 -3
  38. data/lib/puppet-herald/stubs/puppet.rb +20 -9
  39. data/lib/puppet-herald/version.rb +17 -7
  40. data/package.json +8 -3
  41. data/puppet-herald.gemspec +3 -6
  42. data/spec/integration/application_spec.rb +175 -0
  43. data/spec/integration/models/node_spec.rb +4 -4
  44. data/spec/integration/models/report_spec.rb +7 -7
  45. data/spec/spec_helper.rb +12 -7
  46. data/spec/support/active_record.rb +6 -10
  47. data/spec/support/reconnectdb.rb +13 -0
  48. data/spec/unit/puppet-herald/cli_spec.rb +45 -13
  49. data/spec/unit/puppet-herald/client_spec.rb +23 -0
  50. data/spec/unit/puppet-herald/database_spec.rb +8 -9
  51. data/spec/unit/puppet-herald/javascript_spec.rb +8 -13
  52. data/spec/unit/puppet-herald_spec.rb +4 -4
  53. data/test/javascript/karma.conf.js +43 -5
  54. data/test/javascript/src/app_test.js +90 -0
  55. data/test/javascript/src/components/artifact/artifact-directive_test.js +36 -0
  56. data/test/javascript/src/components/artifact/artifact_test.js +64 -0
  57. data/test/javascript/src/components/directives/status-button_test.js +159 -0
  58. data/test/javascript/src/components/filters/filters_test.js +35 -0
  59. data/test/javascript/src/node/node_test.js +87 -0
  60. data/test/javascript/src/nodes/nodes_test.js +56 -0
  61. data/test/javascript/src/report/report_test.js +94 -0
  62. metadata +98 -68
  63. data/lib/puppet-herald/app.rb +0 -103
  64. data/lib/puppet-herald/public/components/artifact/artifact-directive_test.js +0 -17
  65. data/spec/integration/app_spec.rb +0 -21
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ describe('herald.filters module', function() {
4
+ beforeEach(module('herald.filters'));
5
+
6
+ describe('capitalize filter', function() {
7
+
8
+ var capitalize;
9
+
10
+ beforeEach(inject(function($injector) {
11
+ var $filter = $injector.get('$filter');
12
+ capitalize = $filter('capitalize');
13
+ }));
14
+
15
+ it('should returns "" when given null', function() {
16
+ expect(capitalize(null)).toEqual('');
17
+ });
18
+
19
+ it('should returns "" when given undefined', function() {
20
+ expect(capitalize(undefined)).toEqual('');
21
+ });
22
+
23
+ it('should returns "Nodes" when given "nodes"', function() {
24
+ expect(capitalize('nodes')).toEqual('Nodes');
25
+ });
26
+
27
+ it('should returns "Nodes" when given "Nodes"', function() {
28
+ expect(capitalize('Nodes')).toEqual('Nodes');
29
+ });
30
+
31
+ it('should returns "Nodes" when given "NODES"', function() {
32
+ expect(capitalize('NODES')).toEqual('NODES');
33
+ });
34
+ });
35
+ });
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ describe('herald.node module', function() {
4
+ beforeEach(module('herald.node'));
5
+ describe('NodeController', function() {
6
+
7
+ var controller, Page, $httpBackend;
8
+ var defaultMockValues = {
9
+ name: 'master.cl.vm',
10
+ no_of_reports: 2,
11
+ status: 'unchanged',
12
+ id: 1,
13
+ last_run: '2014-01-01T12:34:56',
14
+ reports: [
15
+ { configuration_version: '1234578', status: 'unchanged', environment: 'production', time: '2014-01-01T12:34:56', id: 2 },
16
+ { configuration_version: '1234556', status: 'pending', environment: 'production', time: '2014-01-01T12:24:16', id: 1 },
17
+ ]
18
+ };
19
+
20
+ beforeEach(inject(function($injector) {
21
+
22
+ // Set up the mock http service responses
23
+ $httpBackend = $injector.get('$httpBackend');
24
+ // Get hold of a scope (i.e. the root scope)
25
+ var $rootScope = $injector.get('$rootScope');
26
+ // The $controller service is used to create instances of controllers
27
+ var $controller = $injector.get('$controller');
28
+
29
+ var $routeParams = $injector.get('$routeParams');
30
+
31
+ Page = $injector.get('Page');
32
+
33
+ controller = function(id, mockValues) {
34
+ if (id == null) { id = 1; }
35
+ if (typeof(mockValues) === 'undefined') { mockValues = defaultMockValues; }
36
+
37
+ $routeParams.nodeId = id;
38
+ // backend definition common for all tests
39
+ var handler = $httpBackend.when('GET', '/api/v1/nodes/' + id);
40
+ if (mockValues != null) {
41
+ handler.respond(mockValues);
42
+ } else {
43
+ handler.respond(404, null);
44
+ }
45
+ $httpBackend.expectGET('/api/v1/nodes/' + id);
46
+ var ctrl = $controller('NodeController', { $scope : $rootScope });
47
+ $httpBackend.flush();
48
+ return ctrl;
49
+ };
50
+ }));
51
+
52
+ afterEach(function() {
53
+ $httpBackend.verifyNoOutstandingExpectation();
54
+ $httpBackend.verifyNoOutstandingRequest();
55
+ });
56
+
57
+ describe('fetching data from "/api/v1/nodes/1"', function() {
58
+ it('there should be node fetched', function() {
59
+ expect(controller().node).not.toEqual(null);
60
+ });
61
+ it('should have fetch 2 reports', function() {
62
+ var ctrl = controller();
63
+ expect(ctrl.node.reports.length).toBe(2);
64
+ expect(ctrl.node.no_of_reports).toBe(2);
65
+ });
66
+ it('should set Page.title to "Node: master.cl.vm"', function() {
67
+ expect(controller()).not.toBe(undefined);
68
+ expect(Page.actualTitle()).toEqual('Node');
69
+ expect(Page.actualTarget()).toBe('master.cl.vm');
70
+ });
71
+ });
72
+ describe('fetching data from "/api/v1/nodes/12"', function() {
73
+ var ctrl;
74
+ beforeEach(function() {
75
+ ctrl = controller(12, null);
76
+ });
77
+ it('there should not be node fetched', function() {
78
+ expect(ctrl.node).toEqual(null);
79
+ });
80
+ it('should set Page.title to "Node: "', function() {
81
+ expect(ctrl).not.toBe(undefined);
82
+ expect(Page.actualTitle()).toEqual('Node');
83
+ expect(Page.actualTarget()).toBe(undefined);
84
+ });
85
+ });
86
+ });
87
+ });
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ describe('herald.nodes module', function() {
4
+ beforeEach(module('herald.nodes'));
5
+ describe('NodesController', function() {
6
+
7
+ var controller, Page, $httpBackend;
8
+ var defaultMockValues = [
9
+ { name: 'master.cl.vm', no_of_reports: 12, status: 'unchanged', id: 1, last_run: '2014-01-01T12:34:56' },
10
+ { name: 'db.cl.vm', no_of_reports: 5, status: 'failed', id: 2, last_run: '2014-01-01T12:24:36' },
11
+ { name: 'app.cl.vm', no_of_reports: 10, status: 'pending', id: 3, last_run: '2014-01-01T12:14:46' }
12
+ ];
13
+
14
+ beforeEach(inject(function($injector) {
15
+
16
+ // Set up the mock http service responses
17
+ $httpBackend = $injector.get('$httpBackend');
18
+ // Get hold of a scope (i.e. the root scope)
19
+ var $rootScope = $injector.get('$rootScope');
20
+ // The $controller service is used to create instances of controllers
21
+ var $controller = $injector.get('$controller');
22
+
23
+ Page = $injector.get('Page');
24
+
25
+ controller = function(mockValues) {
26
+ if (typeof(mockValues) === 'undefined') { mockValues = defaultMockValues; }
27
+ // backend definition common for all tests
28
+ $httpBackend.when('GET', '/api/v1/nodes')
29
+ .respond(mockValues);
30
+ $httpBackend.expectGET('/api/v1/nodes');
31
+ var ctrl = $controller('NodesController', { $scope : $rootScope });
32
+ $httpBackend.flush();
33
+ return ctrl;
34
+ };
35
+ }));
36
+
37
+ afterEach(function() {
38
+ $httpBackend.verifyNoOutstandingExpectation();
39
+ $httpBackend.verifyNoOutstandingRequest();
40
+ });
41
+
42
+ describe('fetching data from "/api/v1/nodes"', function() {
43
+ it('there should be 3 nodes fetched', function() {
44
+ expect(controller().all.length).toBe(3);
45
+ });
46
+ it('first should be named "master.cl.vm"', function() {
47
+ expect(controller().all[0].name).toBe('master.cl.vm');
48
+ });
49
+ });
50
+ it('should set Page.title to "All nodes"', function() {
51
+ expect(controller()).not.toBe(undefined);
52
+ expect(Page.actualTitle()).toEqual('All nodes');
53
+ expect(Page.actualTarget()).toBe(undefined);
54
+ });
55
+ });
56
+ });
@@ -0,0 +1,94 @@
1
+ 'use strict';
2
+
3
+ describe('herald.report module', function() {
4
+ beforeEach(module('herald.report'));
5
+ describe('ReportController', function() {
6
+
7
+ var controller, Page, $httpBackend;
8
+ var defaultMockValues = {
9
+ configuration_version: '1234578',
10
+ status: 'changed',
11
+ environment: 'production',
12
+ time: '2014-01-01T12:34:56',
13
+ puppet_version: '3.7.3',
14
+ host: 'master.cl.vm',
15
+ kind: 'apply',
16
+ id: 2,
17
+ log_entries: [
18
+ { level: 'debug', message: 'Stating compile', source: 'Puppet' },
19
+ { level: 'info', message: 'Compiled configuration version: "1234578" for environment production', source: 'Puppet' },
20
+ { level: 'notice', message: 'changed from "abc" to "bcd"', source: 'Stage[main]/Users/User[root]/shell' },
21
+ { level: 'notice', message: 'Config processed in 4.32 sec.', source: '' },
22
+ ]
23
+ };
24
+
25
+ beforeEach(inject(function($injector) {
26
+
27
+ // Set up the mock http service responses
28
+ $httpBackend = $injector.get('$httpBackend');
29
+ // Get hold of a scope (i.e. the root scope)
30
+ var $rootScope = $injector.get('$rootScope');
31
+ // The $controller service is used to create instances of controllers
32
+ var $controller = $injector.get('$controller');
33
+
34
+ var $routeParams = $injector.get('$routeParams');
35
+
36
+ Page = $injector.get('Page');
37
+
38
+ controller = function(id, mockValues) {
39
+ if (id == null) { id = 1; }
40
+ if (typeof(mockValues) === 'undefined') { mockValues = defaultMockValues; }
41
+
42
+ $routeParams.reportId = id;
43
+ // backend definition common for all tests
44
+ var handler = $httpBackend.when('GET', '/api/v1/reports/' + id);
45
+ if (mockValues != null) {
46
+ handler.respond(mockValues);
47
+ } else {
48
+ handler.respond(404, null);
49
+ }
50
+ $httpBackend.expectGET('/api/v1/reports/' + id);
51
+ var ctrl = $controller('ReportController', { $scope : $rootScope });
52
+ $httpBackend.flush();
53
+ return ctrl;
54
+ };
55
+ }));
56
+
57
+ afterEach(function() {
58
+ $httpBackend.verifyNoOutstandingExpectation();
59
+ $httpBackend.verifyNoOutstandingRequest();
60
+ });
61
+
62
+ describe('fetching data from "/api/v1/reports/1"', function() {
63
+ var ctrl;
64
+ beforeEach(function() {
65
+ ctrl = controller();
66
+ });
67
+ it('there should be report fetched', function() {
68
+ expect(ctrl.report).not.toEqual(null);
69
+ });
70
+ it('should have fetch report with 4 lines', function() {
71
+ expect(ctrl.report.log_entries.length).toBe(4);
72
+ });
73
+ it('should set Page.title to "Report: 1234578"', function() {
74
+ expect(ctrl).not.toBe(undefined);
75
+ expect(Page.actualTitle()).toEqual('Report');
76
+ expect(Page.actualTarget()).toBe('1234578');
77
+ });
78
+ });
79
+ describe('fetching data from "/api/v1/reports/12"', function() {
80
+ var ctrl;
81
+ beforeEach(function() {
82
+ ctrl = controller(12, null);
83
+ });
84
+ it('there should not be report fetched', function() {
85
+ expect(ctrl.report).toEqual(null);
86
+ });
87
+ it('should set Page.title to "Report: "', function() {
88
+ expect(ctrl).not.toBe(undefined);
89
+ expect(Page.actualTitle()).toEqual('Report');
90
+ expect(Page.actualTarget()).toBe(undefined);
91
+ });
92
+ });
93
+ });
94
+ });
metadata CHANGED
@@ -1,77 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: puppet-herald
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Krzysztof Suszynski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2014-12-13 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: sinatra
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
19
17
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: "1.4"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
22
20
  type: :runtime
23
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
25
- name: sinatra-contrib
26
21
  prerelease: false
27
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra-contrib
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
29
31
  - - ~>
30
- - !ruby/object:Gem::Version
31
- version: "1.4"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
32
34
  type: :runtime
33
- version_requirements: *id002
34
- - !ruby/object:Gem::Dependency
35
- name: sinatra-activerecord
36
35
  prerelease: false
37
- requirement: &id003 !ruby/object:Gem::Requirement
38
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sinatra-activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
39
45
  - - ~>
40
- - !ruby/object:Gem::Version
41
- version: "2.0"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
42
48
  type: :runtime
43
- version_requirements: *id003
44
- - !ruby/object:Gem::Dependency
45
- name: micro-optparse
46
49
  prerelease: false
47
- requirement: &id004 !ruby/object:Gem::Requirement
48
- requirements:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
49
52
  - - ~>
50
- - !ruby/object:Gem::Version
51
- version: "1.2"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: micro-optparse
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
52
62
  type: :runtime
53
- version_requirements: *id004
54
- - !ruby/object:Gem::Dependency
55
- name: uglifier
56
63
  prerelease: false
57
- requirement: &id005 !ruby/object:Gem::Requirement
58
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
59
66
  - - ~>
60
- - !ruby/object:Gem::Version
61
- version: "2.6"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: uglifier
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '2.6'
62
76
  type: :runtime
63
- version_requirements: *id005
64
- description: Provides a gateway for consuming puppet reports, a REST API and a simple Web app to display reports.
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.6'
83
+ description: Provides a gateway for consuming puppet reports, a REST API and a simple
84
+ Web app to display reports.
65
85
  email: krzysztof.suszynski@wavesoftware.pl
66
- executables:
86
+ executables:
67
87
  - puppet-herald
68
88
  extensions: []
69
-
70
89
  extra_rdoc_files: []
71
-
72
- files:
90
+ files:
73
91
  - .gitignore
74
92
  - .rspec
93
+ - .rubocop.yml
94
+ - .rubocop_todo.yml
75
95
  - .travis.yml
76
96
  - Gemfile
77
97
  - Gemfile.local.example
@@ -85,8 +105,14 @@ files:
85
105
  - db/schema.rb
86
106
  - db/seeds.rb
87
107
  - lib/puppet-herald.rb
88
- - lib/puppet-herald/app.rb
108
+ - lib/puppet-herald/app/api.rb
109
+ - lib/puppet-herald/app/configuration.rb
110
+ - lib/puppet-herald/app/frontend.rb
111
+ - lib/puppet-herald/app/views/app.erb
112
+ - lib/puppet-herald/app/views/err500.erb
113
+ - lib/puppet-herald/application.rb
89
114
  - lib/puppet-herald/cli.rb
115
+ - lib/puppet-herald/client.rb
90
116
  - lib/puppet-herald/database.rb
91
117
  - lib/puppet-herald/javascript.rb
92
118
  - lib/puppet-herald/models/log-entry.rb
@@ -96,12 +122,12 @@ files:
96
122
  - lib/puppet-herald/public/app.js
97
123
  - lib/puppet-herald/public/bower.json
98
124
  - lib/puppet-herald/public/components/artifact/artifact-directive.js
99
- - lib/puppet-herald/public/components/artifact/artifact-directive_test.js
100
125
  - lib/puppet-herald/public/components/artifact/artifact.js
101
126
  - lib/puppet-herald/public/components/directives/directives.js
102
127
  - lib/puppet-herald/public/components/directives/status-button.html
103
128
  - lib/puppet-herald/public/components/directives/status-button.js
104
129
  - lib/puppet-herald/public/components/filters/filters.js
130
+ - lib/puppet-herald/public/components/page.js
105
131
  - lib/puppet-herald/public/css/herald.css
106
132
  - lib/puppet-herald/public/img/shield97.svg
107
133
  - lib/puppet-herald/public/node/node.html
@@ -112,49 +138,53 @@ files:
112
138
  - lib/puppet-herald/public/report/report.js
113
139
  - lib/puppet-herald/stubs/puppet.rb
114
140
  - lib/puppet-herald/version.rb
115
- - lib/puppet-herald/views/app.erb
116
- - lib/puppet-herald/views/err500.erb
117
141
  - package.json
118
142
  - puppet-herald.gemspec
119
- - spec/integration/app_spec.rb
143
+ - spec/integration/application_spec.rb
120
144
  - spec/integration/fixtures/changed-notify.yaml
121
145
  - spec/integration/models/node_spec.rb
122
146
  - spec/integration/models/report_spec.rb
123
147
  - spec/model_helper.rb
124
148
  - spec/spec_helper.rb
125
149
  - spec/support/active_record.rb
150
+ - spec/support/reconnectdb.rb
126
151
  - spec/unit/puppet-herald/cli_spec.rb
152
+ - spec/unit/puppet-herald/client_spec.rb
127
153
  - spec/unit/puppet-herald/database_spec.rb
128
154
  - spec/unit/puppet-herald/javascript_spec.rb
129
155
  - spec/unit/puppet-herald/version_spec.rb
130
156
  - spec/unit/puppet-herald_spec.rb
131
157
  - test/javascript/karma.conf.js
158
+ - test/javascript/src/app_test.js
159
+ - test/javascript/src/components/artifact/artifact-directive_test.js
160
+ - test/javascript/src/components/artifact/artifact_test.js
161
+ - test/javascript/src/components/directives/status-button_test.js
162
+ - test/javascript/src/components/filters/filters_test.js
163
+ - test/javascript/src/node/node_test.js
164
+ - test/javascript/src/nodes/nodes_test.js
165
+ - test/javascript/src/report/report_test.js
132
166
  homepage: https://github.com/wavesoftware/gem-puppet-herald
133
- licenses:
167
+ licenses:
134
168
  - Apache 2.0
135
169
  metadata: {}
136
-
137
170
  post_install_message:
138
171
  rdoc_options: []
139
-
140
- require_paths:
172
+ require_paths:
141
173
  - lib
142
- required_ruby_version: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ! '>='
177
+ - !ruby/object:Gem::Version
146
178
  version: 1.9.2
147
- required_rubygems_version: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: "0"
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
152
184
  requirements: []
153
-
154
185
  rubyforge_project:
155
- rubygems_version: 2.0.14
186
+ rubygems_version: 2.4.5
156
187
  signing_key:
157
188
  specification_version: 4
158
189
  summary: a Puppet report processor
159
190
  test_files: []
160
-