hieracles 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +15 -0
  4. data/.rspec +2 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +5 -0
  7. data/CHANGELOG.md +8 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE +22 -0
  10. data/README.md +30 -0
  11. data/Rakefile +14 -0
  12. data/bin/hc +32 -0
  13. data/bin/nodeinfo +41 -0
  14. data/hieracles.gemspec +30 -0
  15. data/lib/hieracles.rb +15 -0
  16. data/lib/hieracles/config.rb +56 -0
  17. data/lib/hieracles/format.rb +58 -0
  18. data/lib/hieracles/formats/console.rb +84 -0
  19. data/lib/hieracles/formats/csv.rb +66 -0
  20. data/lib/hieracles/formats/plain.rb +61 -0
  21. data/lib/hieracles/formats/yaml.rb +36 -0
  22. data/lib/hieracles/help.rb +27 -0
  23. data/lib/hieracles/hiera.rb +27 -0
  24. data/lib/hieracles/node.rb +108 -0
  25. data/lib/hieracles/optparse.rb +63 -0
  26. data/lib/hieracles/utils.rb +59 -0
  27. data/spec/files/config.yml +5 -0
  28. data/spec/files/enc/server.example.com.yaml +7 -0
  29. data/spec/files/enc/server2.example.com.yaml +7 -0
  30. data/spec/files/enc/server3.example.com.yaml +7 -0
  31. data/spec/files/farm_modules/dev.pp +5 -0
  32. data/spec/files/farm_modules/dev2.pp +5 -0
  33. data/spec/files/hiera.yaml +16 -0
  34. data/spec/files/hiera_no_yamlbackend.yaml +16 -0
  35. data/spec/files/hiera_yamlbackend_notfound.yaml +16 -0
  36. data/spec/files/modules/fake_module/manifests/init.pp +3 -0
  37. data/spec/files/modules/fake_module2/manifests/init.pp +3 -0
  38. data/spec/files/modules/fake_module3/manifests/init.pp +3 -0
  39. data/spec/files/params/common/common.yml +2 -0
  40. data/spec/files/params/farm/dev.yaml +1 -0
  41. data/spec/files/params/nodes/server.example.com.yaml +5 -0
  42. data/spec/lib/config_spec.rb +63 -0
  43. data/spec/lib/format_spec.rb +91 -0
  44. data/spec/lib/formats/console_spec.rb +107 -0
  45. data/spec/lib/formats/csv_spec.rb +89 -0
  46. data/spec/lib/formats/plain_spec.rb +94 -0
  47. data/spec/lib/formats/yaml_spec.rb +80 -0
  48. data/spec/lib/help_spec.rb +8 -0
  49. data/spec/lib/hiera_spec.rb +111 -0
  50. data/spec/lib/node_spec.rb +158 -0
  51. data/spec/lib/optparse_spec.rb +65 -0
  52. data/spec/lib/utils_spec.rb +61 -0
  53. data/spec/spec_helper.rb +26 -0
  54. metadata +223 -0
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hieracles::Optparse do
4
+ describe '.initialize' do
5
+ context 'with proper arguments' do
6
+ let(:array) { ['arg1', 'arg2', '-c', 'path/to/config-file', '-f', 'thatformat'] }
7
+ let(:expected_payload) { ['arg1', 'arg2'] }
8
+ let(:expected_options) do
9
+ { config: 'path/to/config-file', format: 'thatformat' }
10
+ end
11
+ subject { Hieracles::Optparse.new array }
12
+ it "populates payload" do
13
+ expect(subject.payload).to eq expected_payload
14
+ end
15
+ it 'populates options' do
16
+ expect(subject.options).to eq expected_options
17
+ end
18
+ end
19
+
20
+ context 'with proper arguments in random order' do
21
+ let(:array) { ['-c', 'path/to/config-file', 'arg1', 'arg2', '-f', 'thatformat'] }
22
+ let(:expected_payload) { ['arg1', 'arg2'] }
23
+ let(:expected_options) do
24
+ { config: 'path/to/config-file', format: 'thatformat' }
25
+ end
26
+ subject { Hieracles::Optparse.new array }
27
+ it "populates payload" do
28
+ expect(subject.payload).to eq expected_payload
29
+ end
30
+ it 'populates options' do
31
+ expect(subject.options).to eq expected_options
32
+ end
33
+ end
34
+
35
+ context 'with funny arguments' do
36
+ let(:array) { ['arg1', '-u', 'path/to/config-file', 'arg2', '-f', 'thatformat'] }
37
+ let(:expected_payload) { ['arg1', 'arg2'] }
38
+ let(:expected_options) do
39
+ { format: 'thatformat' }
40
+ end
41
+ subject { Hieracles::Optparse.new array }
42
+ it "populates payload" do
43
+ expect(subject.payload).to eq expected_payload
44
+ end
45
+ it 'populates options' do
46
+ expect(subject.options).to eq expected_options
47
+ end
48
+ end
49
+
50
+ context 'with arguments in alternative syntax' do
51
+ let(:array) { ['arg1', 'arg2', '-config', 'path/to/config-file', '-format', 'thatformat'] }
52
+ let(:expected_payload) { ['arg1', 'arg2'] }
53
+ let(:expected_options) do
54
+ { config: 'path/to/config-file', format: 'thatformat' }
55
+ end
56
+ subject { Hieracles::Optparse.new array }
57
+ it "populates payload" do
58
+ expect(subject.payload).to eq expected_payload
59
+ end
60
+ it 'populates options' do
61
+ expect(subject.options).to eq expected_options
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hieracles::Utils do
4
+ include Hieracles::Utils
5
+
6
+ it '.deep_sort' do
7
+ hash = {
8
+ b: '',
9
+ a: { aa: 'aa' },
10
+ d: 'd',
11
+ c: [cb: %w(b a c), ca: { caa: 'caa' }]
12
+ }
13
+ expected = {
14
+ a: { aa: 'aa' },
15
+ b: '',
16
+ c: [ca: { caa: 'caa' }, cb: %w(a b c)],
17
+ d: 'd'
18
+ }
19
+ expect(deep_sort hash).to eq expected
20
+ end
21
+
22
+ describe '.to_deep_hash' do
23
+ before :each do
24
+ @shallow_hash = {
25
+ 'pressrelease.label.one' => 'Pressmeddelande',
26
+ 'pressrelease.label.other' => 'Pressmeddelanden',
27
+ 'article' => 'Artikel',
28
+ 'category' => ''
29
+ }
30
+ @deep_hash = {
31
+ pressrelease: {
32
+ label: {
33
+ one: 'Pressmeddelande',
34
+ other: 'Pressmeddelanden'
35
+ }
36
+ },
37
+ article: 'Artikel',
38
+ category: ''
39
+ }
40
+ end
41
+
42
+ it 'convert shallow hash with dot separated keys to deep hash' do
43
+ expect(to_deep_hash @shallow_hash).to eq @deep_hash
44
+ end
45
+
46
+ it 'converts a deep hash to a shallow one' do
47
+ expect(to_shallow_hash @deep_hash).to eq @shallow_hash
48
+ end
49
+ end
50
+
51
+ describe '.max_key_length' do
52
+ let(:hash) { { 'key1' => nil, 'key22' => nil, 'key9chars' => nil } }
53
+ it { expect(max_key_length hash).to eq 9 }
54
+ end
55
+
56
+ describe '.sym_keys' do
57
+ let(:hash) { { 'key1' => '1', 'key22' => '2', 'key9chars' => 3 } }
58
+ let(:expected) { { key1: '1', key22: '2', key9chars: 3 } }
59
+ it { expect(sym_keys hash).to eq expected }
60
+ end
61
+ end
@@ -0,0 +1,26 @@
1
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
2
+ require 'rubygems'
3
+ require 'bundler'
4
+
5
+ if ENV['COV']
6
+ require 'simplecov'
7
+ SimpleCov.profiles.define :app do
8
+ add_group 'bin', '/bin'
9
+ add_group 'lib', '/lib'
10
+ add_filter '/vendor/'
11
+ add_filter '/spec/'
12
+ end
13
+ SimpleCov.start :app
14
+ else
15
+ require 'coveralls'
16
+ Coveralls.wear!
17
+ end
18
+
19
+ require 'hieracles'
20
+
21
+ RSpec.configure do |config|
22
+ config.mock_with :rspec
23
+ config.expect_with :rspec do |c|
24
+ c.syntax = :expect
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hieracles
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - mose
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fivemat
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: CLI tool for Hiera parameters visualisation and analysis.
112
+ email:
113
+ - mose@gandi.net
114
+ executables:
115
+ - hc
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".coveralls.yml"
120
+ - ".gitignore"
121
+ - ".rspec"
122
+ - ".ruby-version"
123
+ - ".travis.yml"
124
+ - CHANGELOG.md
125
+ - Gemfile
126
+ - LICENSE
127
+ - README.md
128
+ - Rakefile
129
+ - bin/hc
130
+ - bin/nodeinfo
131
+ - hieracles.gemspec
132
+ - lib/hieracles.rb
133
+ - lib/hieracles/config.rb
134
+ - lib/hieracles/format.rb
135
+ - lib/hieracles/formats/console.rb
136
+ - lib/hieracles/formats/csv.rb
137
+ - lib/hieracles/formats/plain.rb
138
+ - lib/hieracles/formats/yaml.rb
139
+ - lib/hieracles/help.rb
140
+ - lib/hieracles/hiera.rb
141
+ - lib/hieracles/node.rb
142
+ - lib/hieracles/optparse.rb
143
+ - lib/hieracles/utils.rb
144
+ - spec/files/config.yml
145
+ - spec/files/enc/server.example.com.yaml
146
+ - spec/files/enc/server2.example.com.yaml
147
+ - spec/files/enc/server3.example.com.yaml
148
+ - spec/files/farm_modules/dev.pp
149
+ - spec/files/farm_modules/dev2.pp
150
+ - spec/files/hiera.yaml
151
+ - spec/files/hiera_no_yamlbackend.yaml
152
+ - spec/files/hiera_yamlbackend_notfound.yaml
153
+ - spec/files/modules/fake_module/manifests/init.pp
154
+ - spec/files/modules/fake_module2/manifests/init.pp
155
+ - spec/files/modules/fake_module3/manifests/init.pp
156
+ - spec/files/params/common/common.yml
157
+ - spec/files/params/farm/dev.yaml
158
+ - spec/files/params/nodes/server.example.com.yaml
159
+ - spec/lib/config_spec.rb
160
+ - spec/lib/format_spec.rb
161
+ - spec/lib/formats/console_spec.rb
162
+ - spec/lib/formats/csv_spec.rb
163
+ - spec/lib/formats/plain_spec.rb
164
+ - spec/lib/formats/yaml_spec.rb
165
+ - spec/lib/help_spec.rb
166
+ - spec/lib/hiera_spec.rb
167
+ - spec/lib/node_spec.rb
168
+ - spec/lib/optparse_spec.rb
169
+ - spec/lib/utils_spec.rb
170
+ - spec/spec_helper.rb
171
+ homepage: https://github.com/Gandi/hieracles
172
+ licenses:
173
+ - MIT
174
+ metadata:
175
+ changelog: https://github.com/Gandi/hieracles/blob/master/CHANGELOG.md
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubyforge_project:
192
+ rubygems_version: 2.2.2
193
+ signing_key:
194
+ specification_version: 4
195
+ summary: CLI tool for Hiera parameters visualisation.
196
+ test_files:
197
+ - spec/files/config.yml
198
+ - spec/files/enc/server.example.com.yaml
199
+ - spec/files/enc/server2.example.com.yaml
200
+ - spec/files/enc/server3.example.com.yaml
201
+ - spec/files/farm_modules/dev.pp
202
+ - spec/files/farm_modules/dev2.pp
203
+ - spec/files/hiera.yaml
204
+ - spec/files/hiera_no_yamlbackend.yaml
205
+ - spec/files/hiera_yamlbackend_notfound.yaml
206
+ - spec/files/modules/fake_module/manifests/init.pp
207
+ - spec/files/modules/fake_module2/manifests/init.pp
208
+ - spec/files/modules/fake_module3/manifests/init.pp
209
+ - spec/files/params/common/common.yml
210
+ - spec/files/params/farm/dev.yaml
211
+ - spec/files/params/nodes/server.example.com.yaml
212
+ - spec/lib/config_spec.rb
213
+ - spec/lib/format_spec.rb
214
+ - spec/lib/formats/console_spec.rb
215
+ - spec/lib/formats/csv_spec.rb
216
+ - spec/lib/formats/plain_spec.rb
217
+ - spec/lib/formats/yaml_spec.rb
218
+ - spec/lib/help_spec.rb
219
+ - spec/lib/hiera_spec.rb
220
+ - spec/lib/node_spec.rb
221
+ - spec/lib/optparse_spec.rb
222
+ - spec/lib/utils_spec.rb
223
+ - spec/spec_helper.rb