ronin-core 0.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.github/workflows/ruby.yml +41 -0
  4. data/.gitignore +12 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +160 -0
  7. data/.ruby-version +1 -0
  8. data/.yardopts +1 -0
  9. data/COPYING.txt +165 -0
  10. data/ChangeLog.md +11 -0
  11. data/Gemfile +30 -0
  12. data/README.md +299 -0
  13. data/Rakefile +34 -0
  14. data/examples/ruby_shell.rb +11 -0
  15. data/gemspec.yml +28 -0
  16. data/lib/ronin/core/class_registry.rb +246 -0
  17. data/lib/ronin/core/cli/command.rb +87 -0
  18. data/lib/ronin/core/cli/command_shell/command.rb +110 -0
  19. data/lib/ronin/core/cli/command_shell.rb +345 -0
  20. data/lib/ronin/core/cli/generator/options/author.rb +106 -0
  21. data/lib/ronin/core/cli/generator/options/description.rb +54 -0
  22. data/lib/ronin/core/cli/generator/options/reference.rb +60 -0
  23. data/lib/ronin/core/cli/generator/options/summary.rb +54 -0
  24. data/lib/ronin/core/cli/generator.rb +238 -0
  25. data/lib/ronin/core/cli/logging.rb +59 -0
  26. data/lib/ronin/core/cli/options/param.rb +68 -0
  27. data/lib/ronin/core/cli/options/values/arches.rb +45 -0
  28. data/lib/ronin/core/cli/options/values/oses.rb +32 -0
  29. data/lib/ronin/core/cli/printing/arch.rb +71 -0
  30. data/lib/ronin/core/cli/printing/metadata.rb +113 -0
  31. data/lib/ronin/core/cli/printing/os.rb +54 -0
  32. data/lib/ronin/core/cli/printing/params.rb +69 -0
  33. data/lib/ronin/core/cli/ruby_shell.rb +131 -0
  34. data/lib/ronin/core/cli/shell.rb +186 -0
  35. data/lib/ronin/core/git.rb +73 -0
  36. data/lib/ronin/core/home.rb +86 -0
  37. data/lib/ronin/core/metadata/authors/author.rb +241 -0
  38. data/lib/ronin/core/metadata/authors.rb +120 -0
  39. data/lib/ronin/core/metadata/description.rb +100 -0
  40. data/lib/ronin/core/metadata/id.rb +88 -0
  41. data/lib/ronin/core/metadata/references.rb +87 -0
  42. data/lib/ronin/core/metadata/summary.rb +78 -0
  43. data/lib/ronin/core/metadata/version.rb +74 -0
  44. data/lib/ronin/core/params/exceptions.rb +38 -0
  45. data/lib/ronin/core/params/mixin.rb +317 -0
  46. data/lib/ronin/core/params/param.rb +137 -0
  47. data/lib/ronin/core/params/types/boolean.rb +64 -0
  48. data/lib/ronin/core/params/types/enum.rb +107 -0
  49. data/lib/ronin/core/params/types/float.rb +68 -0
  50. data/lib/ronin/core/params/types/integer.rb +100 -0
  51. data/lib/ronin/core/params/types/numeric.rb +106 -0
  52. data/lib/ronin/core/params/types/regexp.rb +67 -0
  53. data/lib/ronin/core/params/types/string.rb +118 -0
  54. data/lib/ronin/core/params/types/type.rb +54 -0
  55. data/lib/ronin/core/params/types/uri.rb +72 -0
  56. data/lib/ronin/core/params/types.rb +62 -0
  57. data/lib/ronin/core/params.rb +19 -0
  58. data/lib/ronin/core/version.rb +24 -0
  59. data/ronin-core.gemspec +59 -0
  60. data/spec/class_registry_spec.rb +224 -0
  61. data/spec/cli/command_shell/command_spec.rb +113 -0
  62. data/spec/cli/command_shell_spec.rb +1114 -0
  63. data/spec/cli/command_spec.rb +16 -0
  64. data/spec/cli/fixtures/irb_command +8 -0
  65. data/spec/cli/fixtures/template/dir/file1.txt +1 -0
  66. data/spec/cli/fixtures/template/dir/file2.txt +1 -0
  67. data/spec/cli/fixtures/template/file.erb +1 -0
  68. data/spec/cli/fixtures/template/file.txt +1 -0
  69. data/spec/cli/generator/options/author_spec.rb +121 -0
  70. data/spec/cli/generator/options/description_spec.rb +45 -0
  71. data/spec/cli/generator/options/reference_spec.rb +53 -0
  72. data/spec/cli/generator/options/summary_spec.rb +45 -0
  73. data/spec/cli/generator_spec.rb +244 -0
  74. data/spec/cli/logging_spec.rb +95 -0
  75. data/spec/cli/options/param_spec.rb +67 -0
  76. data/spec/cli/options/values/arches_spec.rb +62 -0
  77. data/spec/cli/printing/arch_spec.rb +130 -0
  78. data/spec/cli/printing/metadata_spec.rb +211 -0
  79. data/spec/cli/printing/os_spec.rb +64 -0
  80. data/spec/cli/printing/params_spec.rb +63 -0
  81. data/spec/cli/ruby_shell.rb +99 -0
  82. data/spec/cli/shell_spec.rb +211 -0
  83. data/spec/fixtures/example_class_registry/base_class.rb +9 -0
  84. data/spec/fixtures/example_class_registry/classes/loaded_class.rb +9 -0
  85. data/spec/fixtures/example_class_registry/classes/name_mismatch.rb +9 -0
  86. data/spec/fixtures/example_class_registry/classes/no_module.rb +4 -0
  87. data/spec/fixtures/example_class_registry.rb +8 -0
  88. data/spec/git_spec.rb +58 -0
  89. data/spec/home_spec.rb +64 -0
  90. data/spec/metadata/authors/author_spec.rb +335 -0
  91. data/spec/metadata/authors_spec.rb +126 -0
  92. data/spec/metadata/description_spec.rb +74 -0
  93. data/spec/metadata/id_spec.rb +92 -0
  94. data/spec/metadata/references_spec.rb +100 -0
  95. data/spec/metadata/summary_spec.rb +74 -0
  96. data/spec/metadata/version_spec.rb +72 -0
  97. data/spec/params/mixin_spec.rb +484 -0
  98. data/spec/params/param_spec.rb +164 -0
  99. data/spec/params/types/boolean_spec.rb +56 -0
  100. data/spec/params/types/enum_spec.rb +94 -0
  101. data/spec/params/types/float_spec.rb +107 -0
  102. data/spec/params/types/integer_spec.rb +155 -0
  103. data/spec/params/types/numeric_spec.rb +138 -0
  104. data/spec/params/types/regexp_spec.rb +64 -0
  105. data/spec/params/types/string_spec.rb +174 -0
  106. data/spec/params/types/type_spec.rb +14 -0
  107. data/spec/params/types/uri_spec.rb +62 -0
  108. data/spec/spec_helper.rb +11 -0
  109. metadata +252 -0
@@ -0,0 +1,174 @@
1
+ require 'spec_helper'
2
+ require 'ronin/core/params/types/string'
3
+
4
+ describe Ronin::Core::Params::Types::String do
5
+ describe "#initialize" do
6
+ it "must default #allow_empty? to false" do
7
+ expect(subject.allow_empty?).to be(false)
8
+ end
9
+
10
+ it "must default #allow_blank? to false" do
11
+ expect(subject.allow_blank?).to be(false)
12
+ end
13
+
14
+ it "must default #format to nil" do
15
+ expect(subject.format).to be(nil)
16
+ end
17
+
18
+ context "when given the format: keyword argument" do
19
+ let(:format) { /foo/ }
20
+
21
+ subject { described_class.new(format: format) }
22
+
23
+ it "must set #format" do
24
+ expect(subject.format).to eq(format)
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "#allow_empty?" do
30
+ context "when initialized with allow_empty: true" do
31
+ subject { described_class.new(allow_empty: true) }
32
+
33
+ it "must return true" do
34
+ expect(subject.allow_empty?).to be(true)
35
+ end
36
+ end
37
+
38
+ context "when initialized with allow_empty: false" do
39
+ subject { described_class.new(allow_empty: false) }
40
+
41
+ it "must return false" do
42
+ expect(subject.allow_empty?).to be(false)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe "#allow_blank?" do
48
+ context "when initialized with allow_blank: true" do
49
+ subject { described_class.new(allow_blank: true) }
50
+
51
+ it "must return true" do
52
+ expect(subject.allow_blank?).to be(true)
53
+ end
54
+ end
55
+
56
+ context "when initialized with allow_blank: false" do
57
+ subject { described_class.new(allow_blank: false) }
58
+
59
+ it "must return false" do
60
+ expect(subject.allow_blank?).to be(false)
61
+ end
62
+ end
63
+ end
64
+
65
+ describe "#coerce" do
66
+ context "when given an Enumerable" do
67
+ let(:value) { ["foo", "bar"] }
68
+
69
+ it do
70
+ expect {
71
+ subject.coerce(value)
72
+ }.to raise_error(Ronin::Core::Params::ValidationError,"cannot convert an Enumerable into a String (#{value.inspect})")
73
+ end
74
+ end
75
+
76
+ context "when given a String" do
77
+ let(:value) { "foo" }
78
+
79
+ it "must return the String" do
80
+ expect(subject.coerce(value)).to eq(value)
81
+ end
82
+
83
+ context "but when #format is set" do
84
+ subject { described_class.new(format: /foo/) }
85
+
86
+ context "and the given value matches #format" do
87
+ it "must return the String value" do
88
+ expect(subject.coerce(value)).to eq(value)
89
+ end
90
+ end
91
+
92
+ context "but the given value does not match #format" do
93
+ let(:value) { "bar" }
94
+
95
+ it do
96
+ expect {
97
+ subject.coerce(value)
98
+ }.to raise_error(Ronin::Core::Params::ValidationError,"does not match the format (#{value.inspect})")
99
+ end
100
+ end
101
+ end
102
+
103
+ context "but the string is empty" do
104
+ let(:value) { "" }
105
+
106
+ it do
107
+ expect {
108
+ subject.coerce(value)
109
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value cannot be empty")
110
+ end
111
+
112
+ context "and when initialized with allow_empty: true" do
113
+ subject { described_class.new(allow_empty: true) }
114
+
115
+ it "must return the empty String" do
116
+ expect(subject.coerce(value)).to eq(value)
117
+ end
118
+ end
119
+ end
120
+
121
+ context "but the String is all whitespace" do
122
+ let(:value) { " \t\n\r" }
123
+
124
+ it do
125
+ expect {
126
+ subject.coerce(value)
127
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value cannot contain all whitespace (#{value.inspect})")
128
+ end
129
+
130
+ context "and when initialized with allow_blank: true" do
131
+ subject { described_class.new(allow_blank: true) }
132
+
133
+ it "must return the blank String" do
134
+ expect(subject.coerce(value)).to eq(value)
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ context "when given a non-String object" do
141
+ context "and it defines a #to_s method" do
142
+ module TestTypesString
143
+ class ObjectWithToS
144
+ def to_s
145
+ "foo"
146
+ end
147
+ end
148
+ end
149
+
150
+ let(:value) { TestTypesString::ObjectWithToS.new }
151
+
152
+ it "must call #to_s on the value" do
153
+ expect(subject.coerce(value)).to eq(value.to_s)
154
+ end
155
+ end
156
+
157
+ context "but it does not respond to #to_s" do
158
+ module TestTypesString
159
+ class ObjectWithoutToS
160
+ undef to_s
161
+ end
162
+ end
163
+
164
+ let(:value) { TestTypesString::ObjectWithoutToS.new }
165
+
166
+ it do
167
+ expect {
168
+ subject.coerce(value)
169
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value does not define a #to_s method (#{value.inspect})")
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+ require 'ronin/core/params/types/type'
3
+
4
+ describe Ronin::Core::Params::Types::Type do
5
+ describe "#corece" do
6
+ let(:value) { Object.new }
7
+
8
+ it do
9
+ expect {
10
+ subject.coerce(value)
11
+ }.to raise_error(NotImplementedError,"#{described_class}#coerce method was not implemented")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+ require 'ronin/core/params/types/uri'
3
+
4
+ describe Ronin::Core::Params::Types::URI do
5
+ describe "#coerce" do
6
+ context "when given a Regexp value" do
7
+ let(:value) { URI('https://example.com/') }
8
+
9
+ it "must return the Regexp" do
10
+ expect(subject.coerce(value)).to eq(value)
11
+ end
12
+ end
13
+
14
+ context "when given a String value" do
15
+ let(:value) { "https://example.com/" }
16
+
17
+ it "must parse the String as a URI" do
18
+ expect(subject.coerce(value)).to eq(URI.parse(value))
19
+ end
20
+
21
+ context "but the String is empty" do
22
+ let(:value) { "" }
23
+
24
+ it do
25
+ expect {
26
+ subject.coerce(value)
27
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value must not be empty")
28
+ end
29
+ end
30
+
31
+ context "but the String does not start with a 'scheme:'" do
32
+ let(:value) { "foo" }
33
+
34
+ it do
35
+ expect {
36
+ subject.coerce(value)
37
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value must start with a 'scheme:' (#{value.inspect})")
38
+ end
39
+ end
40
+
41
+ context "but the String cannot be parsed as a valid URI" do
42
+ let(:value) { "https:// \n" }
43
+
44
+ it do
45
+ expect {
46
+ subject.coerce(value)
47
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value is not a valid URI (#{value.inspect})")
48
+ end
49
+ end
50
+ end
51
+
52
+ context "when given a non-URI and non-String value" do
53
+ let(:value) { Object.new }
54
+
55
+ it do
56
+ expect {
57
+ subject.coerce(value)
58
+ }.to raise_error(Ronin::Core::Params::ValidationError,"value must be either a String or a URI (#{value.inspect})")
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,11 @@
1
+ require 'rspec'
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+
5
+ ENV.delete('XDG_CACHE_HOME')
6
+ ENV.delete('XDG_CONFIG_HOME')
7
+ ENV.delete('XDG_DATA_HOME')
8
+
9
+ require 'ronin/core/version'
10
+
11
+ include Ronin
metadata ADDED
@@ -0,0 +1,252 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ronin-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.beta1
5
+ platform: ruby
6
+ authors:
7
+ - Postmodern
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-01-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: reline
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: command_kit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: irb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ description: |
70
+ ronin-core is a core library providing common functionality for all ronin
71
+ libraries.
72
+ email: postmodern.mod3@gmail.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files:
76
+ - COPYING.txt
77
+ - ChangeLog.md
78
+ - README.md
79
+ files:
80
+ - ".document"
81
+ - ".github/workflows/ruby.yml"
82
+ - ".gitignore"
83
+ - ".rspec"
84
+ - ".rubocop.yml"
85
+ - ".ruby-version"
86
+ - ".yardopts"
87
+ - COPYING.txt
88
+ - ChangeLog.md
89
+ - Gemfile
90
+ - README.md
91
+ - Rakefile
92
+ - examples/ruby_shell.rb
93
+ - gemspec.yml
94
+ - lib/ronin/core/class_registry.rb
95
+ - lib/ronin/core/cli/command.rb
96
+ - lib/ronin/core/cli/command_shell.rb
97
+ - lib/ronin/core/cli/command_shell/command.rb
98
+ - lib/ronin/core/cli/generator.rb
99
+ - lib/ronin/core/cli/generator/options/author.rb
100
+ - lib/ronin/core/cli/generator/options/description.rb
101
+ - lib/ronin/core/cli/generator/options/reference.rb
102
+ - lib/ronin/core/cli/generator/options/summary.rb
103
+ - lib/ronin/core/cli/logging.rb
104
+ - lib/ronin/core/cli/options/param.rb
105
+ - lib/ronin/core/cli/options/values/arches.rb
106
+ - lib/ronin/core/cli/options/values/oses.rb
107
+ - lib/ronin/core/cli/printing/arch.rb
108
+ - lib/ronin/core/cli/printing/metadata.rb
109
+ - lib/ronin/core/cli/printing/os.rb
110
+ - lib/ronin/core/cli/printing/params.rb
111
+ - lib/ronin/core/cli/ruby_shell.rb
112
+ - lib/ronin/core/cli/shell.rb
113
+ - lib/ronin/core/git.rb
114
+ - lib/ronin/core/home.rb
115
+ - lib/ronin/core/metadata/authors.rb
116
+ - lib/ronin/core/metadata/authors/author.rb
117
+ - lib/ronin/core/metadata/description.rb
118
+ - lib/ronin/core/metadata/id.rb
119
+ - lib/ronin/core/metadata/references.rb
120
+ - lib/ronin/core/metadata/summary.rb
121
+ - lib/ronin/core/metadata/version.rb
122
+ - lib/ronin/core/params.rb
123
+ - lib/ronin/core/params/exceptions.rb
124
+ - lib/ronin/core/params/mixin.rb
125
+ - lib/ronin/core/params/param.rb
126
+ - lib/ronin/core/params/types.rb
127
+ - lib/ronin/core/params/types/boolean.rb
128
+ - lib/ronin/core/params/types/enum.rb
129
+ - lib/ronin/core/params/types/float.rb
130
+ - lib/ronin/core/params/types/integer.rb
131
+ - lib/ronin/core/params/types/numeric.rb
132
+ - lib/ronin/core/params/types/regexp.rb
133
+ - lib/ronin/core/params/types/string.rb
134
+ - lib/ronin/core/params/types/type.rb
135
+ - lib/ronin/core/params/types/uri.rb
136
+ - lib/ronin/core/version.rb
137
+ - ronin-core.gemspec
138
+ - spec/class_registry_spec.rb
139
+ - spec/cli/command_shell/command_spec.rb
140
+ - spec/cli/command_shell_spec.rb
141
+ - spec/cli/command_spec.rb
142
+ - spec/cli/fixtures/irb_command
143
+ - spec/cli/fixtures/template/dir/file1.txt
144
+ - spec/cli/fixtures/template/dir/file2.txt
145
+ - spec/cli/fixtures/template/file.erb
146
+ - spec/cli/fixtures/template/file.txt
147
+ - spec/cli/generator/options/author_spec.rb
148
+ - spec/cli/generator/options/description_spec.rb
149
+ - spec/cli/generator/options/reference_spec.rb
150
+ - spec/cli/generator/options/summary_spec.rb
151
+ - spec/cli/generator_spec.rb
152
+ - spec/cli/logging_spec.rb
153
+ - spec/cli/options/param_spec.rb
154
+ - spec/cli/options/values/arches_spec.rb
155
+ - spec/cli/printing/arch_spec.rb
156
+ - spec/cli/printing/metadata_spec.rb
157
+ - spec/cli/printing/os_spec.rb
158
+ - spec/cli/printing/params_spec.rb
159
+ - spec/cli/ruby_shell.rb
160
+ - spec/cli/shell_spec.rb
161
+ - spec/fixtures/example_class_registry.rb
162
+ - spec/fixtures/example_class_registry/base_class.rb
163
+ - spec/fixtures/example_class_registry/classes/loaded_class.rb
164
+ - spec/fixtures/example_class_registry/classes/name_mismatch.rb
165
+ - spec/fixtures/example_class_registry/classes/no_module.rb
166
+ - spec/git_spec.rb
167
+ - spec/home_spec.rb
168
+ - spec/metadata/authors/author_spec.rb
169
+ - spec/metadata/authors_spec.rb
170
+ - spec/metadata/description_spec.rb
171
+ - spec/metadata/id_spec.rb
172
+ - spec/metadata/references_spec.rb
173
+ - spec/metadata/summary_spec.rb
174
+ - spec/metadata/version_spec.rb
175
+ - spec/params/mixin_spec.rb
176
+ - spec/params/param_spec.rb
177
+ - spec/params/types/boolean_spec.rb
178
+ - spec/params/types/enum_spec.rb
179
+ - spec/params/types/float_spec.rb
180
+ - spec/params/types/integer_spec.rb
181
+ - spec/params/types/numeric_spec.rb
182
+ - spec/params/types/regexp_spec.rb
183
+ - spec/params/types/string_spec.rb
184
+ - spec/params/types/type_spec.rb
185
+ - spec/params/types/uri_spec.rb
186
+ - spec/spec_helper.rb
187
+ homepage: https://ronin-rb.dev/
188
+ licenses:
189
+ - LGPL-3.0
190
+ metadata:
191
+ documentation_uri: https://rubydoc.info/gems/ronin-core
192
+ source_code_uri: https://github.com/ronin-rb/ronin-core
193
+ bug_tracker_uri: https://github.com/ronin-rb/ronin-core/issues
194
+ changelog_uri: https://github.com/ronin-rb/ronin-core/blob/main/ChangeLog.md
195
+ rubygems_mfa_required: 'true'
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: 3.0.0
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubygems_version: 3.3.26
212
+ signing_key:
213
+ specification_version: 4
214
+ summary: A core library for all ronin libraries.
215
+ test_files:
216
+ - spec/class_registry_spec.rb
217
+ - spec/cli/command_shell/command_spec.rb
218
+ - spec/cli/command_shell_spec.rb
219
+ - spec/cli/command_spec.rb
220
+ - spec/cli/generator/options/author_spec.rb
221
+ - spec/cli/generator/options/description_spec.rb
222
+ - spec/cli/generator/options/reference_spec.rb
223
+ - spec/cli/generator/options/summary_spec.rb
224
+ - spec/cli/generator_spec.rb
225
+ - spec/cli/logging_spec.rb
226
+ - spec/cli/options/param_spec.rb
227
+ - spec/cli/options/values/arches_spec.rb
228
+ - spec/cli/printing/arch_spec.rb
229
+ - spec/cli/printing/metadata_spec.rb
230
+ - spec/cli/printing/os_spec.rb
231
+ - spec/cli/printing/params_spec.rb
232
+ - spec/cli/shell_spec.rb
233
+ - spec/git_spec.rb
234
+ - spec/home_spec.rb
235
+ - spec/metadata/authors/author_spec.rb
236
+ - spec/metadata/authors_spec.rb
237
+ - spec/metadata/description_spec.rb
238
+ - spec/metadata/id_spec.rb
239
+ - spec/metadata/references_spec.rb
240
+ - spec/metadata/summary_spec.rb
241
+ - spec/metadata/version_spec.rb
242
+ - spec/params/mixin_spec.rb
243
+ - spec/params/param_spec.rb
244
+ - spec/params/types/boolean_spec.rb
245
+ - spec/params/types/enum_spec.rb
246
+ - spec/params/types/float_spec.rb
247
+ - spec/params/types/integer_spec.rb
248
+ - spec/params/types/numeric_spec.rb
249
+ - spec/params/types/regexp_spec.rb
250
+ - spec/params/types/string_spec.rb
251
+ - spec/params/types/type_spec.rb
252
+ - spec/params/types/uri_spec.rb