ronin 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 (50) hide show
  1. data/History.txt +13 -0
  2. data/Manifest.txt +19 -17
  3. data/README.txt +9 -9
  4. data/Rakefile +1 -1
  5. data/bin/ronin +2 -2
  6. data/lib/ronin/author.rb +1 -1
  7. data/lib/ronin/cache/extension.rb +4 -12
  8. data/lib/ronin/cache/extension_cache.rb +1 -3
  9. data/lib/ronin/cache/overlay.rb +3 -3
  10. data/lib/ronin/cache/overlay_cache.rb +21 -15
  11. data/lib/ronin/chars/char_set.rb +6 -12
  12. data/lib/ronin/code/reference.rb +142 -0
  13. data/lib/ronin/code/symbol_table.rb +90 -0
  14. data/lib/ronin/context.rb +1 -1
  15. data/lib/ronin/database.rb +12 -3
  16. data/lib/ronin/extensions/string.rb +49 -0
  17. data/lib/ronin/formatting/extensions/text/string.rb +10 -5
  18. data/lib/ronin/object_context.rb +3 -9
  19. data/lib/ronin/pending_context.rb +8 -0
  20. data/lib/ronin/platform.rb +2 -2
  21. data/lib/ronin/product.rb +2 -2
  22. data/lib/ronin/program/command.rb +203 -0
  23. data/lib/ronin/program/commands/add.rb +71 -0
  24. data/lib/ronin/{runner/program → program}/commands/help.rb +14 -16
  25. data/lib/ronin/program/commands/install.rb +64 -0
  26. data/lib/ronin/program/commands/list.rb +79 -0
  27. data/lib/ronin/{runner/program/commands/update.rb → program/commands/remove.rb} +18 -18
  28. data/lib/ronin/{runner/program/commands/remove.rb → program/commands/uninstall.rb} +17 -19
  29. data/lib/ronin/{runner/program/commands/uninstall.rb → program/commands/update.rb} +17 -21
  30. data/lib/ronin/{runner/program → program}/commands.rb +9 -9
  31. data/lib/ronin/{runner/program → program}/exceptions/unknown_command.rb +2 -4
  32. data/lib/ronin/{runner.rb → program/exceptions.rb} +1 -1
  33. data/lib/ronin/{runner/program → program}/options.rb +4 -8
  34. data/lib/ronin/program/program.rb +168 -0
  35. data/lib/ronin/{runner/program/exceptions.rb → program.rb} +2 -1
  36. data/lib/ronin/rpc/client.rb +1 -1
  37. data/lib/ronin/version.rb +1 -1
  38. data/spec/code/reference_spec.rb +72 -0
  39. data/spec/code/symbol_table_spec.rb +35 -0
  40. data/spec/extensions/string_spec.rb +88 -4
  41. data/spec/formatting/text_spec.rb +2 -2
  42. data/spec/helpers.rb +0 -0
  43. metadata +25 -23
  44. data/lib/ronin/runner/program/command.rb +0 -204
  45. data/lib/ronin/runner/program/commands/add.rb +0 -73
  46. data/lib/ronin/runner/program/commands/install.rb +0 -65
  47. data/lib/ronin/runner/program/commands/list.rb +0 -81
  48. data/lib/ronin/runner/program/program.rb +0 -175
  49. data/lib/ronin/runner/program/runner.rb +0 -35
  50. data/lib/ronin/runner/program.rb +0 -26
@@ -21,37 +21,33 @@
21
21
  #++
22
22
  #
23
23
 
24
- require 'ronin/runner/program/command'
24
+ require 'ronin/program/command'
25
25
  require 'ronin/cache/overlay'
26
26
 
27
27
  module Ronin
28
- module Runner
29
- module Program
30
- class UninstallCommand < Command
28
+ module Program
29
+ class UpdateCommand < Command
31
30
 
32
- command :uninstall
31
+ command :update, :up
33
32
 
34
- options('NAME [NAME ...] [options]') do |opts|
35
- opts.options
33
+ options('[NAME ...] [options]') do |opts|
34
+ opts.options
36
35
 
37
- opts.arguments do
38
- opts.arg('NAME','The repository to uninstall')
39
- end
40
-
41
- opts.summary('Uninstall the specified repositories')
36
+ opts.arguments do
37
+ opts.arg('NAME','The repository to update')
42
38
  end
43
39
 
44
- def arguments(*args)
45
- args.each do |name|
46
- Cache::Overlay.save_cache do
47
- Cache::Overlay.uninstall(name) do |repo|
48
- puts "Uninstalling #{repo}..."
49
- end
50
- end
51
- end
52
- end
40
+ opts.summary('Updates all or the specified repositories')
41
+ end
53
42
 
43
+ def arguments(*args)
44
+ if args.empty?
45
+ Cache::Overlay.each { |repo| repo.update }
46
+ else
47
+ args.each { |name| Cache::Overlay.update(name) }
48
+ end
54
49
  end
50
+
55
51
  end
56
52
  end
57
53
  end
@@ -21,13 +21,13 @@
21
21
  #++
22
22
  #
23
23
 
24
- require 'ronin/runner/program/commands/add'
25
- require 'ronin/runner/program/commands/install'
26
- require 'ronin/runner/program/commands/list'
27
- require 'ronin/runner/program/commands/update'
28
- require 'ronin/runner/program/commands/uninstall'
29
- require 'ronin/runner/program/commands/remove'
30
- require 'ronin/runner/program/commands/help'
31
- require 'ronin/extensions'
24
+ require 'ronin/program/commands/add'
25
+ require 'ronin/program/commands/install'
26
+ require 'ronin/program/commands/list'
27
+ require 'ronin/program/commands/update'
28
+ require 'ronin/program/commands/uninstall'
29
+ require 'ronin/program/commands/remove'
30
+ require 'ronin/program/commands/help'
31
+ require 'ronin/extensions/kernel'
32
32
 
33
- ronin_require 'ronin/runner/program/commands'
33
+ ronin_require 'ronin/program/commands'
@@ -22,10 +22,8 @@
22
22
  #
23
23
 
24
24
  module Ronin
25
- module Runner
26
- module Program
27
- class UnknownCommand < RuntimeError
28
- end
25
+ module Program
26
+ class UnknownCommand < RuntimeError
29
27
  end
30
28
  end
31
29
  end
@@ -21,4 +21,4 @@
21
21
  #++
22
22
  #
23
23
 
24
- require 'ronin/runner/program'
24
+ require 'ronin/program/exceptions/unknown_command'
@@ -21,13 +21,13 @@
21
21
  #++
22
22
  #
23
23
 
24
- require 'ronin/runner/program/program'
24
+ require 'ronin/program/program'
25
25
 
26
26
  require 'optparse'
27
27
  require 'ostruct'
28
28
 
29
29
  module Ronin
30
- module Runner
30
+ module Program
31
31
  class Options
32
32
 
33
33
  # Settings used by the options
@@ -147,9 +147,7 @@ module Ronin
147
147
  def summary(*lines)
148
148
  @parser.separator ' Summary:'
149
149
 
150
- lines.each do |line|
151
- @parser.separator " #{line}"
152
- end
150
+ lines.each { |line| @parser.separator " #{line}" }
153
151
 
154
152
  @parser.separator ''
155
153
  return self
@@ -161,9 +159,7 @@ module Ronin
161
159
  def defaults(*flags)
162
160
  @parser.separator ' Defaults:'
163
161
 
164
- flags.each do |flag|
165
- @parser.separator " #{flag}"
166
- end
162
+ flags.each { |flag| @parser.separator " #{flag}" }
167
163
 
168
164
  @parser.separator ''
169
165
  return self
@@ -0,0 +1,168 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ #++
22
+ #
23
+
24
+ require 'ronin/program/command'
25
+ require 'ronin/program/options'
26
+ require 'ronin/program/exceptions/unknown_command'
27
+ require 'ronin/console'
28
+ require 'ronin/version'
29
+
30
+ module Ronin
31
+ module Program
32
+ #
33
+ # Returns the commands registered with the Program.
34
+ #
35
+ def Program.commands
36
+ @@ronin_commands ||= []
37
+ end
38
+
39
+ #
40
+ # Returns the Hash of the Command names and their Command objects
41
+ # registered with the Program.
42
+ #
43
+ def Program.commands_by_name
44
+ @@ronin_commands_by_name ||= {}
45
+ end
46
+
47
+ #
48
+ # Returns +true+ if the a Command with the specified _name_ was
49
+ # registered with the Program.
50
+ #
51
+ def Program.has_command?(name)
52
+ Program.commands_by_name.has_key?(name.to_s)
53
+ end
54
+
55
+ #
56
+ # Returns the Command registered with the Program with the specified
57
+ # _name_.
58
+ #
59
+ def Program.get_command(name)
60
+ name = name.to_s
61
+
62
+ unless Program.has_command?(name)
63
+ raise(UnknownCommand,"unknown command #{name.dump}",caller)
64
+ end
65
+
66
+ return Program.commands_by_name[name]
67
+ end
68
+
69
+ #
70
+ # Prints the specified error _message_.
71
+ #
72
+ def Program.error(message)
73
+ STDERR.puts "ronin: #{message}"
74
+ return false
75
+ end
76
+
77
+ #
78
+ # Exits successfully from the Program. If a _block_ is given, it will
79
+ # be called before the Program is exited.
80
+ #
81
+ def Program.success(&block)
82
+ block.call(self) if block
83
+ exit
84
+ end
85
+
86
+ #
87
+ # Prints the given error _messages_ and exits unseccessfully from the
88
+ # Program. If a _block_ is given, it will be called before any
89
+ # error _messages_ are printed.
90
+ #
91
+ def Program.fail(*messages,&block)
92
+ block.call(self) if block
93
+ messages.each { |mesg| Program.error(mesg) }
94
+
95
+ exit -1
96
+ end
97
+
98
+ #
99
+ # If a _topic_ is given, the help message for that _topic_ will be
100
+ # printed, otherwise a list of available commands will be printed.
101
+ #
102
+ def Program.help(topic=nil)
103
+ if topic
104
+ begin
105
+ get_command(topic).help
106
+ rescue UnknownCommand => exp
107
+ Program.fail(exp)
108
+ end
109
+ else
110
+ puts 'Available commands:'
111
+
112
+ Program.commands.sort_by { |cmd| cmd.command_names[0] }.each { |cmd|
113
+ puts " #{cmd.command_names.join(', ')}"
114
+ }
115
+ end
116
+ end
117
+
118
+ #
119
+ # The default command to run with the given _argv_ Array when no
120
+ # sub-command is given.
121
+ #
122
+ def Program.default_command(*argv)
123
+ opts = Options.new('ronin','<command> [options]') { |opts|
124
+ opts.options do |opts|
125
+ opts.on('-r','--require LIB','require the specified library or path') do |lib|
126
+ Console.auto_load << lib.to_s
127
+ end
128
+
129
+ opts.on('-V','--version','print version information and exit') do
130
+ Program.success do
131
+ puts "Ronin #{Ronin::VERSION}"
132
+ end
133
+ end
134
+ end
135
+
136
+ opts.summary('Ronin is a Ruby development platform designed for information security','and data exploration tasks.')
137
+ }
138
+
139
+ return opts.parse(argv) { |opts,args| Console.start }
140
+ end
141
+
142
+ #
143
+ # Runs the Program with the given _argv_ Array. If the first argument
144
+ # is a sub-command name, the Program will attempt to find and execute
145
+ # the Command with the same name.
146
+ #
147
+ def Program.run(*argv)
148
+ begin
149
+ if (argv.empty? || argv[0][0..0]=='-')
150
+ Program.default_command(*argv)
151
+ else
152
+ cmd = argv.first
153
+ argv = argv[1..-1]
154
+
155
+ if Program.has_command?(cmd)
156
+ Program.commands_by_name[cmd].run(*argv)
157
+ else
158
+ Program.fail("unknown command #{cmd.dump}")
159
+ end
160
+ end
161
+ rescue OptionParser::MissingArgument, OptionParser::InvalidOption => e
162
+ Program.fail(e)
163
+ end
164
+
165
+ return true
166
+ end
167
+ end
168
+ end
@@ -21,4 +21,5 @@
21
21
  #++
22
22
  #
23
23
 
24
- require 'ronin/runner/program/exceptions/unknown_command'
24
+ require 'ronin/program/program'
25
+ require 'ronin/program/commands'
@@ -22,7 +22,7 @@
22
22
  #
23
23
 
24
24
  require 'ronin/rpc/exceptions/not_implemented'
25
- require 'ronin/rpc/exceptions/unknown_service'
25
+ require 'ronin/rpc/exceptions/response_missing'
26
26
  require 'ronin/rpc/service'
27
27
  require 'ronin/extensions/meta'
28
28
 
data/lib/ronin/version.rb CHANGED
@@ -23,5 +23,5 @@
23
23
 
24
24
  module Ronin
25
25
  # Ronin version
26
- VERSION = '0.1.0'
26
+ VERSION = '0.1.1'
27
27
  end
@@ -0,0 +1,72 @@
1
+ require 'ronin/code/reference'
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Code::Reference do
6
+ before(:all) do
7
+ class Thing
8
+
9
+ def exposed
10
+ 1
11
+ end
12
+
13
+ protected
14
+
15
+ def not_exposed
16
+ 2
17
+ end
18
+
19
+ end
20
+
21
+ @object = Thing.new
22
+ @ref = Code::Reference.new(@object)
23
+ end
24
+
25
+ it "should provide direct access to the referenced object" do
26
+ @ref.value.should == @object
27
+ end
28
+
29
+ it "should be a kind of Reference" do
30
+ @ref.kind_of?(Code::Reference).should == true
31
+ @ref.is_a?(Code::Reference).should == true
32
+ @ref.instance_of?(Code::Reference).should == true
33
+ end
34
+
35
+ it "should have the class of the referenced object" do
36
+ @ref.class.should == Thing
37
+ end
38
+
39
+ it "should be a kind of the referenced object type" do
40
+ @ref.kind_of?(Thing).should == true
41
+ @ref.is_a?(Thing).should == true
42
+ @ref.instance_of?(Thing).should == true
43
+ end
44
+
45
+ it "should be equal to itself" do
46
+ @ref.eql?(@ref).should == true
47
+ @ref.should == @ref
48
+ @ref.should === @ref
49
+ end
50
+
51
+ it "should be equal to the referenced object" do
52
+ @ref.eql?(@object).should == true
53
+ @ref.should == @object
54
+ @ref.should === @object
55
+ end
56
+
57
+ it "should respond to Reference methods" do
58
+ @ref.respond_to?(:value).should == true
59
+ end
60
+
61
+ it "should respond to the methods of the referenced object" do
62
+ @ref.respond_to?(:exposed).should == true
63
+ end
64
+
65
+ it "should relay method calls to the referenced object" do
66
+ @ref.exposed.should == 1
67
+ end
68
+
69
+ it "should raise a NoMethodError when trying to call a protected or private method" do
70
+ lambda { @ref.not_exposed }.should raise_error(NoMethodError)
71
+ end
72
+ end
@@ -0,0 +1,35 @@
1
+ require 'ronin/code/symbol_table'
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Code::SymbolTable do
6
+ before(:all) do
7
+ @one = [:a, :b, :c]
8
+ @two = {:one => 1, :two => 2}
9
+
10
+ @table = Code::SymbolTable.new(:one => @one, :two => @two)
11
+ end
12
+
13
+ it "should have symbols" do
14
+ @table.has_symbol?(:one).should == true
15
+ @table.has_symbol?(:two).should == true
16
+ end
17
+
18
+ it "should provide transparent access to the symbol values" do
19
+ @table[:one].should == [:a, :b, :c]
20
+
21
+ @table[:one] = [:d, :e]
22
+ @table[:one].should == [:d, :e]
23
+ end
24
+
25
+ it "should provide direct access to the symbols" do
26
+ @table.symbol(:two).value.should == {:one => 1, :two => 2}
27
+ end
28
+
29
+ it "should be able to set symbols en-mass" do
30
+ @table.symbols = {:three => 3, :four => 4}
31
+
32
+ @table[:three].should == 3
33
+ @table[:four].should == 4
34
+ end
35
+ end
@@ -3,11 +3,95 @@ require 'ronin/extensions/string'
3
3
  require 'spec_helper'
4
4
 
5
5
  describe String do
6
- it "should be able to convert proper names to method names" do
7
- "Proper Name".to_method_name.should == 'proper_name'
6
+ describe "to_method_name" do
7
+ it "should be able to convert proper names to method names" do
8
+ "Proper Name".to_method_name.should == 'proper_name'
9
+ end
10
+
11
+ it "should be able to convert Class names to method names" do
12
+ "Namespace::Test".to_method_name.should == 'namespace_test'
13
+ end
14
+ end
15
+
16
+ describe "common_prefix" do
17
+ it "should find the common prefix between two Strings" do
18
+ one = 'What is puzzling you is the nature of my game'
19
+ two = 'What is puzzling you is the nature of my name'
20
+ common = 'What is puzzling you is the nature of my '
21
+
22
+ one.common_prefix(two).should == common
23
+ end
24
+
25
+ it "should return the common prefix between two Strings with no uncommon postfix" do
26
+ one = "1234"
27
+ two = "12345"
28
+ common = "1234"
29
+
30
+ one.common_prefix(two).should == common
31
+ end
32
+
33
+ it "should return an empty String if there is no common prefix" do
34
+ one = 'Tell me people'
35
+ two = 'Whats my name'
36
+
37
+ one.common_prefix(two).should == ''
38
+ end
39
+
40
+ it "should return an empty String if one of the strings is also empty" do
41
+ one = 'Haha'
42
+ two = ''
43
+
44
+ one.common_prefix(two).should == ''
45
+ end
46
+ end
47
+
48
+ describe "common_postfix" do
49
+ it "should find the common postfix between two Strings" do
50
+ one = 'Tell me baby whats my name'
51
+ two = "Can't you guess my name"
52
+ common = 's my name'
53
+
54
+ one.common_postfix(two).should == common
55
+ end
56
+
57
+ it "should return an empty String if there is no common postfix" do
58
+ one = 'You got to right up, stand up'
59
+ two = 'stand up for your rights'
60
+
61
+ one.common_postfix(two).should == ''
62
+ end
63
+
64
+ it "should return an empty String if one of the strings is also empty" do
65
+ one = 'You and I must fight for our rights'
66
+ two = ''
67
+
68
+ one.common_postfix(two).should == ''
69
+ end
8
70
  end
9
71
 
10
- it "should be able to convert Class names to method names" do
11
- "Namespace::Test".to_method_name.should == 'namespace_test'
72
+ describe "uncommon_substring" do
73
+ it "should find the uncommon substring between two Strings" do
74
+ one = "Tell me baby whats my name"
75
+ two = "Tell me honey whats my name"
76
+ uncommon = 'bab'
77
+
78
+ one.uncommon_substring(two).should == uncommon
79
+ end
80
+
81
+ it "should find the uncommon substring between two Strings with a common prefix" do
82
+ one = 'You and I must fight for our rights'
83
+ two = 'You and I must fight to survive'
84
+ uncommon = 'for our rights'
85
+
86
+ one.uncommon_substring(two).should == uncommon
87
+ end
88
+
89
+ it "should find the uncommon substring between two Strings with a common postfix" do
90
+ one = 'Tell me baby whats my name'
91
+ two = "Can't you guess my name"
92
+ uncommon = 'Tell me baby what'
93
+
94
+ one.uncommon_substring(two).should == uncommon
95
+ end
12
96
  end
13
97
  end
@@ -15,7 +15,7 @@ describe String do
15
15
  @string.respond_to?('format_bytes').should == true
16
16
  end
17
17
 
18
- it "should provide String#rand_case" do
19
- @string.respond_to?('rand_case').should == true
18
+ it "should provide String#random_case" do
19
+ @string.respond_to?('random_case').should == true
20
20
  end
21
21
  end
data/spec/helpers.rb ADDED
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ronin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern Modulus III
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-28 00:00:00 -07:00
12
+ date: 2008-10-26 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -103,14 +103,14 @@ dependencies:
103
103
  version: 0.9.3
104
104
  version:
105
105
  - !ruby/object:Gem::Dependency
106
- name: reverserequire
106
+ name: reverse-require
107
107
  type: :runtime
108
108
  version_requirement:
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: 0.1.0
113
+ version: 0.1.2
114
114
  version:
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: repertoire
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: 1.7.0
133
+ version: 1.8.2
134
134
  version:
135
135
  description: Ronin is a Ruby platform designed for information security and data exploration tasks. Ronin allows for the rapid development and distribution of code over many of the common Source-Code-Management (SCM) systems.
136
136
  email:
@@ -232,6 +232,8 @@ files:
232
232
  - lib/ronin/network/http.rb
233
233
  - lib/ronin/network/http/exceptions.rb
234
234
  - lib/ronin/network/http/exceptions/unknown_request.rb
235
+ - lib/ronin/code/reference.rb
236
+ - lib/ronin/code/symbol_table.rb
235
237
  - lib/ronin/rpc.rb
236
238
  - lib/ronin/rpc/exceptions.rb
237
239
  - lib/ronin/rpc/exceptions/not_implemented.rb
@@ -284,26 +286,24 @@ files:
284
286
  - lib/ronin/cache/ronin.rb
285
287
  - lib/ronin/console.rb
286
288
  - lib/ronin/shell.rb
287
- - lib/ronin/runner.rb
288
- - lib/ronin/runner/program.rb
289
- - lib/ronin/runner/program/exceptions.rb
290
- - lib/ronin/runner/program/exceptions/unknown_command.rb
291
- - lib/ronin/runner/program/command.rb
292
- - lib/ronin/runner/program/options.rb
293
- - lib/ronin/runner/program/commands.rb
294
- - lib/ronin/runner/program/commands/add.rb
295
- - lib/ronin/runner/program/commands/install.rb
296
- - lib/ronin/runner/program/commands/list.rb
297
- - lib/ronin/runner/program/commands/update.rb
298
- - lib/ronin/runner/program/commands/remove.rb
299
- - lib/ronin/runner/program/commands/uninstall.rb
300
- - lib/ronin/runner/program/commands/help.rb
301
- - lib/ronin/runner/program/program.rb
302
- - lib/ronin/runner/program/runner.rb
289
+ - lib/ronin/program.rb
290
+ - lib/ronin/program/exceptions.rb
291
+ - lib/ronin/program/exceptions/unknown_command.rb
292
+ - lib/ronin/program/command.rb
293
+ - lib/ronin/program/options.rb
294
+ - lib/ronin/program/commands.rb
295
+ - lib/ronin/program/commands/add.rb
296
+ - lib/ronin/program/commands/install.rb
297
+ - lib/ronin/program/commands/list.rb
298
+ - lib/ronin/program/commands/update.rb
299
+ - lib/ronin/program/commands/remove.rb
300
+ - lib/ronin/program/commands/uninstall.rb
301
+ - lib/ronin/program/commands/help.rb
302
+ - lib/ronin/program/program.rb
303
303
  - lib/ronin/ronin.rb
304
304
  - lib/ronin/version.rb
305
305
  - tasks/spec.rb
306
- - spec/helpers/
306
+ - spec/helpers.rb
307
307
  - spec/spec_helper.rb
308
308
  - spec/arch_spec.rb
309
309
  - spec/author_spec.rb
@@ -322,6 +322,8 @@ files:
322
322
  - spec/formatting/html_spec.rb
323
323
  - spec/formatting/http_spec.rb
324
324
  - spec/formatting/text_spec.rb
325
+ - spec/code/reference_spec.rb
326
+ - spec/code/symbol_table_spec.rb
325
327
  - spec/license_spec.rb
326
328
  - spec/path_spec.rb
327
329
  - spec/platform_spec.rb
@@ -353,7 +355,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
355
  requirements: []
354
356
 
355
357
  rubyforge_project: ronin
356
- rubygems_version: 1.2.0
358
+ rubygems_version: 1.3.0
357
359
  signing_key:
358
360
  specification_version: 2
359
361
  summary: Ronin is a Ruby platform designed for information security and data exploration tasks