ronin-core 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -150
  3. data/ChangeLog.md +9 -1
  4. data/Gemfile +3 -1
  5. data/Rakefile +1 -1
  6. data/examples/ruby_shell.rb +5 -0
  7. data/examples/test_shell.rb +41 -0
  8. data/lib/ronin/core/class_registry.rb +15 -10
  9. data/lib/ronin/core/cli/command.rb +11 -11
  10. data/lib/ronin/core/cli/command_shell/command.rb +8 -5
  11. data/lib/ronin/core/cli/command_shell.rb +9 -9
  12. data/lib/ronin/core/cli/generator/options/author.rb +4 -5
  13. data/lib/ronin/core/cli/generator/options/description.rb +2 -2
  14. data/lib/ronin/core/cli/generator/options/reference.rb +2 -2
  15. data/lib/ronin/core/cli/generator/options/summary.rb +2 -2
  16. data/lib/ronin/core/cli/generator.rb +10 -7
  17. data/lib/ronin/core/cli/logging.rb +5 -2
  18. data/lib/ronin/core/cli/options/param.rb +4 -4
  19. data/lib/ronin/core/cli/options/values/arches.rb +2 -2
  20. data/lib/ronin/core/cli/options/values/oses.rb +2 -2
  21. data/lib/ronin/core/cli/printing/arch.rb +2 -2
  22. data/lib/ronin/core/cli/printing/metadata.rb +2 -2
  23. data/lib/ronin/core/cli/printing/os.rb +5 -2
  24. data/lib/ronin/core/cli/printing/params.rb +6 -6
  25. data/lib/ronin/core/cli/ruby_shell.rb +3 -2
  26. data/lib/ronin/core/cli/shell.rb +14 -6
  27. data/lib/ronin/core/git.rb +2 -2
  28. data/lib/ronin/core/home.rb +2 -2
  29. data/lib/ronin/core/metadata/authors/author.rb +5 -2
  30. data/lib/ronin/core/metadata/authors.rb +8 -5
  31. data/lib/ronin/core/metadata/description.rb +8 -5
  32. data/lib/ronin/core/metadata/id.rb +7 -4
  33. data/lib/ronin/core/metadata/references.rb +13 -6
  34. data/lib/ronin/core/metadata/summary.rb +10 -7
  35. data/lib/ronin/core/metadata/version.rb +8 -5
  36. data/lib/ronin/core/params/exceptions.rb +2 -2
  37. data/lib/ronin/core/params/mixin.rb +15 -15
  38. data/lib/ronin/core/params/param.rb +2 -2
  39. data/lib/ronin/core/params/types/boolean.rb +2 -2
  40. data/lib/ronin/core/params/types/enum.rb +7 -3
  41. data/lib/ronin/core/params/types/float.rb +2 -2
  42. data/lib/ronin/core/params/types/integer.rb +2 -2
  43. data/lib/ronin/core/params/types/numeric.rb +3 -3
  44. data/lib/ronin/core/params/types/regexp.rb +2 -2
  45. data/lib/ronin/core/params/types/string.rb +2 -2
  46. data/lib/ronin/core/params/types/type.rb +2 -2
  47. data/lib/ronin/core/params/types/uri.rb +2 -2
  48. data/lib/ronin/core/params/types.rb +6 -3
  49. data/lib/ronin/core/params.rb +2 -2
  50. data/lib/ronin/core/version.rb +3 -3
  51. data/ronin-core.gemspec +5 -3
  52. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2f5f5f7d2a3a576e4dc446c47092a671360298a4ae31ecfb3d1ccc37b5661b6
4
- data.tar.gz: 9006bd12c0be7cd0e9fe26eeefd0518c96810c600eb8a3e4e65915292d641fe1
3
+ metadata.gz: 632034dea1307157efadc601fa99bfb2b1eaf3cf81506392f2a68733d68645d4
4
+ data.tar.gz: 32f82f08f6692163e22f55ecc37666e2cc1655e37127bd578009fed61a3b4cbe
5
5
  SHA512:
6
- metadata.gz: 653896adb82564b360c89a40bbc0ce74563ea8adb9db1d91e806bf7fb48555eafcc5cb807b6753b098e529a663c39ffbdfa01298c99bd49e5254c89f24d3ccf8
7
- data.tar.gz: 7c989f9aed0758ce9ddee625ec35337129e283e6e6b6e5403f6f041e1595915283ba572810cf169e9cbf73c13a6b5e38b522406b4f7d825f9ff10dd377079659
6
+ metadata.gz: cba7b2829ba506c61c028d6961a5040b026640a3f60d46f2cdbf96649b6de4385a07d171835ab19e687837e9936bc757a832cd58ca71217e2d186433fdfcb3ab
7
+ data.tar.gz: 64684f9aa1a7e46348b1596ed941b2056c0262806c5310a17991f6e2e43de179dd9d9988315f55a03be079f26b3f8452ec3f009ef09a3f58d236f9b4e8a238f0
data/.rubocop.yml CHANGED
@@ -3,158 +3,21 @@ AllCops:
3
3
  SuggestExtensions: false
4
4
  TargetRubyVersion: 3.1
5
5
 
6
- #
7
- # our rules
8
- #
9
-
10
- Layout/FirstArrayElementIndentation: { Exclude: ['spec/**/*'] }
11
- Layout/LineLength: { Enabled: false }
12
- Layout/SpaceAroundEqualsInParameterDefault: { EnforcedStyle: no_space }
13
- Lint/ConstantDefinitionInBlock: { Exclude: ['spec/**/*'] }
14
- Metrics: { Enabled: false }
15
- Style/SymbolArray: { EnforcedStyle: brackets }
16
- Style/IfInsideElse: { Enabled: false } # Offense count: 1
17
- Style/PercentLiteralDelimiters:
18
- Enabled: true
19
- PreferredDelimiters:
20
- default: '{}'
21
- '%i': '[]'
22
- '%I': '[]'
23
- '%w': '[]'
24
- '%W': '[]'
25
- Style/UnlessElse: { Enabled: false }
26
- Bundler/OrderedGems: { Enabled: false }
27
- Style/CaseEquality: { Exclude: ['lib/ronin/web/server/conditions.rb'] }
28
- Style/Next: { Enabled: false }
29
- Style/HashSyntax: { Enabled: false }
30
- Naming/BlockForwarding: { Enabled: false }
31
- Lint/ReturnInVoidContext: { Enabled: false }
32
- Gemspec/DeprecatedAttributeAssignment: { Enabled: false }
33
- Style/MixinUsage: { Enabled: false }
34
- Naming/VariableNumber: { Enabled: false }
35
- Naming/PredicateName: { Enabled: false }
36
- Style/FetchEnvVar: { Enabled: false }
37
- Layout/RescueEnsureAlignment: { Enabled: false }
38
- Layout/BeginEndAlignment: { Enabled: false }
39
- Layout/EmptyLineAfterMagicComment: { Enabled: false }
40
-
41
- #
42
- # rules that are in flux
43
- #
44
-
45
- # consider enabling these and autocorrecting?
46
- # Layout/SpaceAfterComma
47
- # Layout/SpaceAroundKeyword
48
- # Layout/SpaceBeforeComma
49
- # Layout/SpaceInsideHashLiteralBraces
50
- # Layout/SpaceInsideParens
51
- # Layout/TrailingWhitespace
52
- # Lint/UnreachableLoop
53
- # Lint/UnusedBlockArgument
54
- # Style/ClassCheck
55
- # Style/Documentation
56
- # Style/ExpandPathArguments
57
- # Style/GlobalStdStream
58
- # Style/HashSyntax
59
- # Style/KeywordParametersOrder
60
- # Style/MethodCallWithoutArgsParentheses
61
- # Style/MutableConstant
62
- # Style/QuotedSymbols: { EnforcedStyle: double_quotes }
63
- # Style/RedundantReturn
64
- # Style/SafeNavigation
65
- # Style/SpecialGlobalVars
66
- # Style/StringLiterals: { EnforcedStyle: double_quotes }
67
- # Style/WordArray
68
-
69
- # these have been fixed
70
- # Gemspec/DuplicatedAssignment: { Enabled: false } # Offense count: 1
71
- # Layout/ElseAlignment: { Enabled: false } # Offense count: 1
72
- # Layout/EndAlignment: { Enabled: false } # Offense count: 1
73
- # Lint/DuplicateMethods: { Enabled: false } # Offense count: 1
74
- # Lint/UselessAssignment: { Enabled: false } # Offense count: 1
75
- # Style/Encoding: { Enabled: false } # Offense count: 2
76
- # Style/RedundantBegin: { Enabled: false } # Offense count: 2
77
- # Style/RedundantInterpolation: { Enabled: false } # Offense count: 1
78
- # Style/TrailingCommaInArrayLiteral: { Enabled: false } # Offense count: 1
6
+ inherit_gem:
7
+ rubocop-ronin: rubocop.yml
79
8
 
80
9
  #
81
- # This list was generated with:
82
- # bundle exec rubocop --auto-gen-config --exclude-limit 1
10
+ # ronin-core specific exceptions
83
11
  #
12
+ Lint/MissingSuper: { Exclude: ['lib/ronin/core/params/types/*.rb'] }
13
+ Style/CaseEquality: { Exclude: ['lib/ronin/web/server/conditions.rb'] }
14
+ Style/EmptyMethod:
15
+ Exclude:
16
+ - 'lib/ronin/core/cli/shell.rb'
17
+ - 'spec/**/*'
84
18
 
85
- # > 10 violations
86
- Layout/AssignmentIndentation: { Enabled: false } # Offense count: 11
87
- Layout/EmptyLinesAroundClassBody: { Enabled: false } # Offense count: 76
88
- Layout/HashAlignment: { Enabled: false } # Offense count: 28
89
- Layout/SpaceAfterComma: { Enabled: false } # Offense count: 141
90
- Layout/SpaceInsideHashLiteralBraces: { Enabled: false } # Offense count: 57
91
- Layout/TrailingWhitespace: { Enabled: false } # Offense count: 50
92
- Naming/RescuedExceptionsVariableName: { Enabled: false } # Offense count: 11
93
- Style/BlockDelimiters: { Enabled: false } # Offense count: 17
94
- Style/ClassCheck: { Enabled: false } # Offense count: 10
95
- Style/ClassEqualityComparison: { Enabled: false } # Offense count: 16
96
- Style/FrozenStringLiteralComment: { Enabled: false } # Offense count: 77
97
- Style/GlobalStdStream: { Enabled: false } # Offense count: 13
98
- Style/GuardClause: { Enabled: false } # Offense count: 10
99
- Style/IfUnlessModifier: { Enabled: false } # Offense count: 13
100
- Style/MethodCallWithoutArgsParentheses: { Enabled: false } # Offense count: 10
101
- Style/SpecialGlobalVars: { Enabled: false } # Offense count: 28
102
- Style/StringLiterals: { Enabled: false } # Offense count: 774
103
- Lint/ElseLayout: { Enabled: false } # Offense count: 22
104
-
105
- # < 10 violations
106
- Layout/EmptyLinesAroundModuleBody: { Enabled: false } # Offense count: 5
107
- Layout/ExtraSpacing: { Enabled: false } # Offense count: 6
108
- Layout/FirstHashElementIndentation: { Enabled: false } # Offense count: 4
109
- Layout/ParameterAlignment: { Enabled: false } # Offense count: 9
110
- Layout/SpaceAroundKeyword: { Enabled: false } # Offense count: 7
111
- Layout/SpaceBeforeComma: { Enabled: false } # Offense count: 4
112
- Layout/SpaceInsideParens: { Enabled: false } # Offense count: 4
113
- Lint/EmptyClass: { Enabled: false } # Offense count: 3
114
- Lint/SuppressedException: { Enabled: false } # Offense count: 4
115
- Lint/UnusedMethodArgument: { Enabled: false } # Offense count: 5
116
- Style/AccessorGrouping: { Enabled: false } # Offense count: 7
117
- Style/Documentation: { Enabled: false } # Offense count: 3
118
- Style/ExpandPathArguments: { Enabled: false } # Offense count: 8
119
- Style/KeywordParametersOrder: { Enabled: false } # Offense count: 8
120
- Style/Lambda: { Enabled: false } # Offense count: 3
121
- Style/MutableConstant: { Enabled: false } # Offense count: 4
122
- Style/RaiseArgs: { Enabled: false } # Offense count: 4
123
- Style/RedundantReturn: { Enabled: false } # Offense count: 7
124
- Style/SafeNavigation: { Enabled: false } # Offense count: 5
125
- Style/StringConcatenation: { Enabled: false } # Offense count: 8
126
- Style/WordArray: { Enabled: false } # Offense count: 4
127
-
128
- # 1 or 2 violations
129
- Layout/ArgumentAlignment: { Enabled: false } # Offense count: 1
130
- Layout/BlockAlignment: { Enabled: false } # Offense count: 1
131
- Layout/IndentationWidth: { Enabled: false } # Offense count: 2
132
- Layout/SpaceAroundOperators: { Enabled: false } # Offense count: 1
133
- Layout/SpaceBeforeBlockBraces: { Enabled: false } # Offense count: 1
134
- Lint/MissingSuper: { Enabled: false } # Offense count: 2
135
- Lint/RescueException: { Enabled: false } # Offense count: 1
136
- Lint/UnreachableLoop: { Enabled: false } # Offense count: 1
137
- Lint/UnusedBlockArgument: { Enabled: false } # Offense count: 1
138
- Naming/MethodParameterName: { Enabled: false } # Offense count: 1
139
- Style/EmptyMethod: { Enabled: false } # Offense count: 2
140
- Style/HashConversion: { Enabled: false } # Offense count: 1
141
- Style/MultilineMemoization: { Enabled: false } # Offense count: 1
142
- Style/NumericPredicate: { Enabled: false } # Offense count: 1
143
- Style/OptionalArguments: { Enabled: false } # Offense count: 1
144
- Style/ParenthesesAroundCondition: { Enabled: false } # Offense count: 1
145
- Style/PreferredHashMethods: { Enabled: false } # Offense count: 1
146
- Style/QuotedSymbols: { Enabled: false } # Offense count: 1
147
- Style/RedundantException: { Enabled: false } # Offense count: 1
148
- Style/RedundantRegexpEscape: { Enabled: false } # Offense count: 1
149
- Style/RegexpLiteral: { Enabled: false } # Offense count: 1
150
- Style/RescueStandardError: { Enabled: false } # Offense count: 1
151
- Style/SoleNestedConditional: { Enabled: false } # Offense count: 1
152
- Style/TrailingCommaInHashLiteral: { Enabled: false } # Offense count: 2
153
-
154
- # rubocop cannot tell that rubygems_mfa_required is enabled in gemspec.yml
155
- Gemspec/RequireMFA: { Enabled: false }
156
-
157
- # make an exception for our gemspec code
158
- Gemspec/DuplicatedAssignment:
19
+ Style/GlobalStdStream:
159
20
  Exclude:
160
- - 'ronin-core.gemspec'
21
+ - 'lib/ronin/core/cli/ruby_shell.rb'
22
+ - 'spec/cli/ruby_shell_spec.rb'
23
+
data/ChangeLog.md CHANGED
@@ -1,4 +1,12 @@
1
- ### 0.1.0 / 2023-XX-XX
1
+ ### 0.1.1 / 2023-03-01
2
+
3
+ #### CLI
4
+
5
+ * Allow {Ronin::Core::CLI::Shell} and {Ronin::Core::CLI::CommandShell} to
6
+ rescue interrupts while a shell command is running, and not exit from the
7
+ shell.
8
+
9
+ ### 0.1.0 / 2023-02-01
2
10
 
3
11
  * Initial release:
4
12
  * Provides access to the XDG directories (`~/.config/`, `~/.cache/`,
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  gemspec
@@ -26,5 +27,6 @@ group :development do
26
27
  gem 'dead_end', require: false
27
28
  gem 'sord', require: false, platform: :mri
28
29
  gem 'stackprof', require: false, platform: :mri
29
- gem 'rubocop', require: false
30
+ gem 'rubocop', require: false, platform: :mri
31
+ gem 'rubocop-ronin', require: false, platform: :mri
30
32
  end
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require 'rubygems'
1
+ # frozen_string_literal: true
2
2
 
3
3
  begin
4
4
  require 'bundler'
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  require 'bundler/setup'
3
5
 
4
6
  require 'ronin/core/cli/ruby_shell'
5
7
 
6
8
  module Ronin
9
+ #
10
+ # Example namespace that the Ruby shell will spawn within.
11
+ #
7
12
  module Test
8
13
  end
9
14
  end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+
6
+ require 'ronin/core/cli/command_shell'
7
+
8
+ #
9
+ # An example interactive CLI shell.
10
+ #
11
+ class TestShell < Ronin::Core::CLI::CommandShell
12
+
13
+ shell_name 'test'
14
+
15
+ command :foo, summary: 'Command with no arguments'
16
+ def foo
17
+ puts "no args"
18
+ end
19
+
20
+ command :bar, usage: 'ARG',
21
+ completions: %w[arg1 arg2],
22
+ summary: 'Command with one argument'
23
+ def bar(arg)
24
+ puts "arg=#{arg}"
25
+ end
26
+
27
+ command :baz, usage: '[ARG]',
28
+ summary: 'Command with optional argument'
29
+ def baz(arg=nil)
30
+ puts "arg=#{arg}"
31
+ end
32
+
33
+ command :qux, usage: '[ARGS...]',
34
+ summary: 'Command with repeating arguments'
35
+ def qux(*args)
36
+ puts "args=#{args.join(' ')}"
37
+ end
38
+
39
+ end
40
+
41
+ TestShell.start
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -26,11 +26,11 @@ module Ronin
26
26
  # `lib/ronin/exploits.rb`:
27
27
  #
28
28
  # require 'ronin/core/class_registry'
29
- #
29
+ #
30
30
  # module Ronin
31
31
  # module Exploits
32
32
  # include Ronin::Core::ClassRegistry
33
- #
33
+ #
34
34
  # class_dir "#{__dir__}/classes"
35
35
  # end
36
36
  # end
@@ -40,11 +40,11 @@ module Ronin
40
40
  # module Ronin
41
41
  # module Exploits
42
42
  # class Exploit
43
- #
43
+ #
44
44
  # def self.register(name)
45
45
  # Exploits.register(name,self)
46
46
  # end
47
- #
47
+ #
48
48
  # end
49
49
  # end
50
50
  # end
@@ -52,13 +52,13 @@ module Ronin
52
52
  # `lib/ronin/exploits/my_exploit.rb`:
53
53
  #
54
54
  # require 'ronin/exploits/exploit'
55
- #
55
+ #
56
56
  # module Ronin
57
57
  # module Exploits
58
58
  # class MyExploit < Exploit
59
- #
59
+ #
60
60
  # register 'my_exploit'
61
- #
61
+ #
62
62
  # end
63
63
  # end
64
64
  # end
@@ -79,6 +79,9 @@ module Ronin
79
79
  namespace.extend ClassMethods
80
80
  end
81
81
 
82
+ #
83
+ # Class-methods.
84
+ #
82
85
  module ClassMethods
83
86
  #
84
87
  # Gets or sets the class directory path.
@@ -88,7 +91,7 @@ module Ronin
88
91
  #
89
92
  # @return [String]
90
93
  # The class directory path.
91
- #
94
+ #
92
95
  # @raise [NotImplementedError]
93
96
  # The `class_dir` method was not defined in the module.
94
97
  #
@@ -188,7 +191,9 @@ module Ronin
188
191
  end
189
192
 
190
193
  previous_entries = registry.keys
194
+
191
195
  require(file)
196
+
192
197
  new_entries = registry.keys - previous_entries
193
198
 
194
199
  if new_entries.empty?
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -38,9 +38,9 @@ module Ronin
38
38
  # module Foo
39
39
  # class CLI
40
40
  # class Command < Core::CLI::Command
41
- #
41
+ #
42
42
  # man_dir File.join(__dir__,'..','..','..','..','man')
43
- #
43
+ #
44
44
  # end
45
45
  # end
46
46
  # end
@@ -50,26 +50,26 @@ module Ronin
50
50
  #
51
51
  # # lib/ronin/foo/cli/commands/list.rb
52
52
  # require 'ronin/foo/cli/command'
53
- #
53
+ #
54
54
  # module Ronin
55
55
  # module Foo
56
56
  # class CLI
57
57
  # module Commands
58
58
  # class List < Command
59
- #
59
+ #
60
60
  # usage '[options] [NAME]'
61
- #
61
+ #
62
62
  # argument :name, required: false,
63
63
  # desc: 'Optional name to list'
64
- #
64
+ #
65
65
  # description 'Lists all things'
66
- #
66
+ #
67
67
  # man_page 'ronin-foo-list.1'
68
- #
68
+ #
69
69
  # def run(name=nil)
70
70
  # # ...
71
71
  # end
72
- #
72
+ #
73
73
  # end
74
74
  # end
75
75
  # end
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -22,6 +22,9 @@ module Ronin
22
22
  module Core
23
23
  module CLI
24
24
  class CommandShell < Shell
25
+ #
26
+ # Represents a defined command within a {CommandShell} class.
27
+ #
25
28
  class Command
26
29
 
27
30
  # The command's name.
@@ -77,10 +80,10 @@ module Ronin
77
80
  # Multi-line help information for the command.
78
81
  #
79
82
  def initialize(name, method_name: name,
80
- usage: nil,
83
+ usage: nil,
81
84
  completions: nil,
82
- summary: ,
83
- help: summary)
85
+ summary: ,
86
+ help: summary)
84
87
  @name = name
85
88
  @method_name = method_name
86
89
  @usage = usage
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -30,9 +30,9 @@ module Ronin
30
30
  # ## Example
31
31
  #
32
32
  # class HTTPShell < Ronin::Core::CLI::Shell
33
- #
33
+ #
34
34
  # shell_name 'http'
35
- #
35
+ #
36
36
  # command :get, usage: 'PATH [HEADERS...]',
37
37
  # summary: 'Sends a GET request'
38
38
  # def get(path,*headers)
@@ -44,9 +44,9 @@ module Ronin
44
44
  # def post(path,data,*headers)
45
45
  # # ...
46
46
  # end
47
- #
47
+ #
48
48
  # end
49
- #
49
+ #
50
50
  # HTTPShell.start
51
51
  # # http> get /foo
52
52
  #
@@ -260,7 +260,7 @@ module Ronin
260
260
  command_string.length
261
261
  }.max
262
262
 
263
- command_table.each do |command_string,summary|
263
+ command_table.each do |command_string,summary|
264
264
  puts " #{command_string.ljust(max_command_string)}\t#{summary}"
265
265
  end
266
266
  end
@@ -300,11 +300,11 @@ module Ronin
300
300
 
301
301
  method(name).parameters.each do |(type,arg)|
302
302
  case type
303
- when :req
303
+ when :req
304
304
  minimum += 1
305
305
  maximum += 1
306
306
  when :opt then maximum += 1
307
- when :rest then maximum = Float::INFINITY
307
+ when :rest then maximum = Float::INFINITY
308
308
  end
309
309
  end
310
310
 
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -28,7 +28,6 @@ module Ronin
28
28
  # for the generator command.
29
29
  #
30
30
  module Author
31
-
32
31
  #
33
32
  # The default author name.
34
33
  #
@@ -59,7 +58,7 @@ module Ronin
59
58
  value: {
60
59
  type: String,
61
60
  usage: 'NAME',
62
- default: ->{ default_name }
61
+ default: -> { default_name }
63
62
  },
64
63
  desc: 'The name of the author' do |author|
65
64
  @author_name = author
@@ -69,7 +68,7 @@ module Ronin
69
68
  value: {
70
69
  type: String,
71
70
  usage: 'EMAIL',
72
- default: ->{ default_email }
71
+ default: -> { default_email }
73
72
  },
74
73
  desc: 'The email address of the author' do |email|
75
74
  @author_email = email
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -6,12 +6,12 @@
6
6
  # it under the terms of the GNU Lesser General Public License as published
7
7
  # by the Free Software Foundation, either version 3 of the License, or
8
8
  # (at your option) any later version.
9
- #
9
+ #
10
10
  # ronin-core is distributed in the hope that it will be useful,
11
11
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
13
  # GNU Lesser General Public License for more details.
14
- #
14
+ #
15
15
  # You should have received a copy of the GNU Lesser General Public License
16
16
  # along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
17
17
  #
@@ -31,17 +31,17 @@ module Ronin
31
31
  # ## Example
32
32
  #
33
33
  # class Gen < Command
34
- #
34
+ #
35
35
  # include Core::Generator
36
- #
36
+ #
37
37
  # template_dir File.join(ROOT,'data','templates')
38
- #
38
+ #
39
39
  # argument :path, desc: 'The path of the script to genereate'
40
- #
40
+ #
41
41
  # def run(path)
42
42
  # erb 'script.rb.erb', path
43
43
  # end
44
- #
44
+ #
45
45
  # end
46
46
  #
47
47
  module Generator
@@ -59,6 +59,9 @@ module Ronin
59
59
  command.extend ClassMethods
60
60
  end
61
61
 
62
+ #
63
+ # Class-methods.
64
+ #
62
65
  module ClassMethods
63
66
  #
64
67
  # Gets or sets the template directory.