ronin 0.2.1 → 0.2.2
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.
- data/History.txt +25 -0
- data/Manifest.txt +36 -11
- data/README.txt +6 -8
- data/Rakefile +2 -1
- data/lib/ronin/config.rb +0 -3
- data/lib/ronin/environment.rb +1 -1
- data/lib/ronin/extensions/string.rb +0 -11
- data/lib/ronin/formatting/extensions/binary/integer.rb +24 -12
- data/lib/ronin/formatting/extensions/binary/string.rb +166 -0
- data/lib/ronin/formatting/extensions/text/string.rb +4 -4
- data/lib/ronin/license.rb +42 -12
- data/lib/ronin/os.rb +3 -2
- data/lib/ronin/platform/extension.rb +11 -141
- data/lib/ronin/platform/extension_cache.rb +11 -0
- data/lib/ronin/platform/overlay.rb +56 -25
- data/lib/ronin/platform/overlay_cache.rb +1 -1
- data/lib/ronin/platform/platform.rb +14 -3
- data/lib/ronin/platform/ronin.rb +20 -1
- data/lib/ronin/platform/tasks/spec.rb +9 -0
- data/lib/ronin/{chars.rb → static.rb} +2 -2
- data/lib/ronin/static/finders.rb +144 -0
- data/lib/ronin/static/static.rb +53 -0
- data/lib/ronin/ui/command_line/commands/add.rb +21 -5
- data/lib/ronin/ui/command_line/commands/install.rb +19 -3
- data/lib/ronin/ui/command_line/commands/rm.rb +1 -1
- data/lib/ronin/ui/command_line/commands/uninstall.rb +1 -1
- data/lib/ronin/ui/command_line/commands/update.rb +9 -2
- data/lib/ronin/version.rb +1 -1
- data/spec/extensions/string_spec.rb +0 -10
- data/spec/formatting/binary/helpers/hexdumps.rb +14 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_decimal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_hex_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_hex_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_octal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_octal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_repeated.txt +6 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_repeated.txt +6 -0
- data/spec/formatting/binary/helpers/hexdumps/repeated.bin +1 -0
- data/spec/formatting/binary/integer_spec.rb +61 -1
- data/spec/formatting/binary/string_spec.rb +166 -9
- data/spec/platform/extension_cache_spec.rb +8 -0
- data/spec/platform/helpers/overlays.yaml.erb +3 -0
- data/spec/platform/helpers/overlays/hello/ronin.xml +1 -1
- data/spec/platform/helpers/overlays/random/random/extension.rb +7 -0
- data/spec/platform/helpers/overlays/random/ronin.xml +26 -0
- data/spec/platform/helpers/overlays/test1/ronin.xml +2 -2
- data/spec/platform/helpers/overlays/test2/ronin.xml +2 -2
- data/spec/platform/overlay_cache_spec.rb +5 -3
- data/spec/platform/overlay_spec.rb +35 -0
- data/spec/platform/ronin_spec.rb +13 -1
- data/spec/static/finders_spec.rb +55 -0
- data/spec/static/helpers/static.rb +11 -0
- data/spec/static/helpers/static1/dir/two.txt +0 -0
- data/spec/static/helpers/static1/one.txt +0 -0
- data/spec/static/helpers/static2/dir/two.txt +0 -0
- data/spec/static/helpers/static_class.rb +7 -0
- data/spec/static/static_spec.rb +24 -0
- data/static/{overlay.xsl → ronin/platform/overlay.xsl} +0 -0
- metadata +50 -17
- data/bin/ronin-ext +0 -12
- data/bin/ronin-overlay +0 -12
- data/lib/ronin/chars/char_set.rb +0 -198
- data/lib/ronin/chars/chars.rb +0 -190
- data/lib/ronin/ui/command_line/commands/ext.rb +0 -70
- data/lib/ronin/ui/command_line/commands/overlay.rb +0 -189
- data/spec/chars/char_set_spec.rb +0 -175
- data/spec/chars/chars_spec.rb +0 -107
- data/static/extension.rb +0 -9
data/bin/ronin-ext
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
|
5
|
-
lib_dir = File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
6
|
-
unless $LOAD_PATH.include?(lib_dir)
|
7
|
-
$LOAD_PATH << lib_dir
|
8
|
-
end
|
9
|
-
|
10
|
-
require 'ronin/ui/command_line/commands/ext'
|
11
|
-
|
12
|
-
Ronin::UI::CommandLine::Commands::Ext.run(*ARGV)
|
data/bin/ronin-overlay
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
|
5
|
-
lib_dir = File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
6
|
-
unless $LOAD_PATH.include?(lib_dir)
|
7
|
-
$LOAD_PATH << lib_dir
|
8
|
-
end
|
9
|
-
|
10
|
-
require 'ronin/ui/command_line/commands/overlay'
|
11
|
-
|
12
|
-
Ronin::UI::CommandLine::Commands::Overlay.run(*ARGV)
|
data/lib/ronin/chars/char_set.rb
DELETED
@@ -1,198 +0,0 @@
|
|
1
|
-
#
|
2
|
-
#--
|
3
|
-
# Ronin - A Ruby platform designed for information security and data
|
4
|
-
# exploration tasks.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2006-2009 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 'set'
|
25
|
-
|
26
|
-
module Ronin
|
27
|
-
module Chars
|
28
|
-
class CharSet < SortedSet
|
29
|
-
|
30
|
-
#
|
31
|
-
# Creates a new CharSet object with the given _chars_.
|
32
|
-
#
|
33
|
-
def initialize(*chars)
|
34
|
-
super()
|
35
|
-
|
36
|
-
merge_chars = lambda { |element|
|
37
|
-
if element.kind_of?(String)
|
38
|
-
element.each_byte(&merge_chars)
|
39
|
-
elsif element.kind_of?(Integer)
|
40
|
-
self << element
|
41
|
-
elsif element.kind_of?(Enumerable)
|
42
|
-
element.each(&merge_chars)
|
43
|
-
end
|
44
|
-
}
|
45
|
-
|
46
|
-
merge_chars.call(chars)
|
47
|
-
end
|
48
|
-
|
49
|
-
alias include_byte? include?
|
50
|
-
alias bytes to_a
|
51
|
-
alias each_byte each
|
52
|
-
alias select_bytes select
|
53
|
-
alias map_bytes map
|
54
|
-
|
55
|
-
#
|
56
|
-
# Returns +true+ if the character set includes the specified _char_,
|
57
|
-
# returns +false+ otherwise.
|
58
|
-
#
|
59
|
-
def include_char?(char)
|
60
|
-
char.each_byte do |b|
|
61
|
-
return include?(b)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
#
|
66
|
-
# Returns all the characters within the character set as Strings.
|
67
|
-
#
|
68
|
-
def chars
|
69
|
-
map { |b| b.chr }
|
70
|
-
end
|
71
|
-
|
72
|
-
#
|
73
|
-
# Iterates over every character within the character set, passing
|
74
|
-
# each to the given _block_.
|
75
|
-
#
|
76
|
-
def each_char(&block)
|
77
|
-
each { |b| block.call(b.chr) } if block
|
78
|
-
end
|
79
|
-
|
80
|
-
#
|
81
|
-
# Selects an Array of characters from the character set that match
|
82
|
-
# the given _block_.
|
83
|
-
#
|
84
|
-
def select_chars(&block)
|
85
|
-
chars.select(&block)
|
86
|
-
end
|
87
|
-
|
88
|
-
#
|
89
|
-
# Maps the characters of the character set using the given _block_.
|
90
|
-
#
|
91
|
-
def map_chars(&block)
|
92
|
-
chars.map(&block)
|
93
|
-
end
|
94
|
-
|
95
|
-
#
|
96
|
-
# Returns a random byte from the character set.
|
97
|
-
#
|
98
|
-
def random_byte
|
99
|
-
self.entries[rand(self.length)]
|
100
|
-
end
|
101
|
-
|
102
|
-
#
|
103
|
-
# Returns a random char from the character set.
|
104
|
-
#
|
105
|
-
def random_char
|
106
|
-
random_byte.chr
|
107
|
-
end
|
108
|
-
|
109
|
-
#
|
110
|
-
# Pass a random byte to the specified _block_, _n_ times.
|
111
|
-
#
|
112
|
-
def each_random_byte(n,&block)
|
113
|
-
n.times { block.call(random_byte) }
|
114
|
-
end
|
115
|
-
|
116
|
-
#
|
117
|
-
# Pass a random character to the specified _block_, _n_ times.
|
118
|
-
#
|
119
|
-
def each_random_char(n,&block)
|
120
|
-
each_random_byte(n) { |b| block.call(b.chr) }
|
121
|
-
end
|
122
|
-
|
123
|
-
#
|
124
|
-
# Returns an Array of the specified _length_ containing
|
125
|
-
# random bytes from the character set. The specified _length_ may
|
126
|
-
# be an Integer, Array or a Range of lengths.
|
127
|
-
#
|
128
|
-
def random_bytes(length)
|
129
|
-
if (length.kind_of?(Array) || length.kind_of?(Range))
|
130
|
-
return Array.new(length.sort_by { rand }.first) { random_byte }
|
131
|
-
else
|
132
|
-
return Array.new(length) { random_byte }
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
#
|
137
|
-
# Returns an Array of the specified _length_ containing
|
138
|
-
# random characters from the character set. The specified _length_
|
139
|
-
# may be an Integer, Array or a Range of lengths.
|
140
|
-
#
|
141
|
-
def random_chars(length)
|
142
|
-
random_bytes(length).map { |b| b.chr }
|
143
|
-
end
|
144
|
-
|
145
|
-
#
|
146
|
-
# Returns a String of the specified _length_ containing
|
147
|
-
# random characters from the character set.
|
148
|
-
#
|
149
|
-
def random_string(length)
|
150
|
-
random_chars(length).join
|
151
|
-
end
|
152
|
-
|
153
|
-
#
|
154
|
-
# Creates a new CharSet object containing the both the characters
|
155
|
-
# of the character set and the specified _other_set_.
|
156
|
-
#
|
157
|
-
def |(other_set)
|
158
|
-
super(CharSet.new(other_set))
|
159
|
-
end
|
160
|
-
|
161
|
-
alias + |
|
162
|
-
|
163
|
-
#
|
164
|
-
# Returns +true+ if all of the bytes within the specified _string_
|
165
|
-
# are included in the character set, returns +false+ otherwise.
|
166
|
-
#
|
167
|
-
# Chars.alpha =~ "hello"
|
168
|
-
# # => true
|
169
|
-
#
|
170
|
-
def =~(string)
|
171
|
-
string.each_byte do |b|
|
172
|
-
return false unless include?(b)
|
173
|
-
end
|
174
|
-
|
175
|
-
return true
|
176
|
-
end
|
177
|
-
|
178
|
-
#
|
179
|
-
# Inspects the character set.
|
180
|
-
#
|
181
|
-
def inspect
|
182
|
-
"#<#{self.class.name}: {" + map { |b|
|
183
|
-
case b
|
184
|
-
when (0x07..0x0d), (0x20..0x7e)
|
185
|
-
b.chr.dump
|
186
|
-
when 0x00
|
187
|
-
# sly hack to make char-sets more friendly
|
188
|
-
# to us C programmers
|
189
|
-
'"\0"'
|
190
|
-
else
|
191
|
-
"0x%02x" % b
|
192
|
-
end
|
193
|
-
}.join(', ') + "}>"
|
194
|
-
end
|
195
|
-
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
data/lib/ronin/chars/chars.rb
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
#
|
2
|
-
#--
|
3
|
-
# Ronin - A Ruby platform designed for information security and data
|
4
|
-
# exploration tasks.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2006-2009 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/chars/char_set'
|
25
|
-
|
26
|
-
module Ronin
|
27
|
-
module Chars
|
28
|
-
# The numeric decimal character set
|
29
|
-
NUMERIC = CharSet.new('0'..'9')
|
30
|
-
|
31
|
-
# The octal character set
|
32
|
-
OCTAL = CharSet.new('0'..'7')
|
33
|
-
|
34
|
-
# The upper-case hexadecimal character set
|
35
|
-
UPPERCASE_HEXADECIMAL = NUMERIC + ('A'..'F')
|
36
|
-
|
37
|
-
# The lower-case hexadecimal character set
|
38
|
-
LOWERCASE_HEXADECIMAL = NUMERIC + ('a'..'f')
|
39
|
-
|
40
|
-
# The hexadecimal character set
|
41
|
-
HEXADECIMAL = UPPERCASE_HEXADECIMAL + LOWERCASE_HEXADECIMAL
|
42
|
-
|
43
|
-
# The upper-case alpha character set
|
44
|
-
UPPERCASE_ALPHA = CharSet.new('A'..'Z')
|
45
|
-
|
46
|
-
# The lower-case alpha character set
|
47
|
-
LOWERCASE_ALPHA = CharSet.new('a'..'z')
|
48
|
-
|
49
|
-
# The alpha character set
|
50
|
-
ALPHA = UPPERCASE_ALPHA + LOWERCASE_ALPHA
|
51
|
-
|
52
|
-
# The alpha-numeric character set
|
53
|
-
ALPHA_NUMERIC = ALPHA + NUMERIC
|
54
|
-
|
55
|
-
# The punctuation character set
|
56
|
-
PUNCTUATION = CharSet.new(' ', '\'', '"', '`', ',', ';', ':', '~', '-',
|
57
|
-
'(', ')', '[', ']', '{', '}', '.', '?', '!')
|
58
|
-
|
59
|
-
# The symbolic character set
|
60
|
-
SYMBOLS = PUNCTUATION + ['@', '#', '$', '%', '^', '&', '*', '_', '+',
|
61
|
-
'=', '|', '\\', '<', '>', '/']
|
62
|
-
|
63
|
-
# The space character set
|
64
|
-
SPACE = CharSet.new(' ', "\f", "\n", "\r", "\t", "\v")
|
65
|
-
|
66
|
-
# The set of printable characters (including spaces)
|
67
|
-
PRINTABLE = ALPHA_NUMERIC + PUNCTUATION + SYMBOLS + SPACE
|
68
|
-
|
69
|
-
# The control-char character set
|
70
|
-
CONTROL = CharSet.new(0..0x1f, 0x7f)
|
71
|
-
|
72
|
-
# The ASCII character set
|
73
|
-
ASCII = CharSet.new(0..0x7f)
|
74
|
-
|
75
|
-
# The full 8-bit character set
|
76
|
-
ALL = CharSet.new(0..0xff)
|
77
|
-
|
78
|
-
#
|
79
|
-
# The numeric decimal character set.
|
80
|
-
#
|
81
|
-
def Chars.numeric
|
82
|
-
NUMERIC
|
83
|
-
end
|
84
|
-
|
85
|
-
#
|
86
|
-
# The octal character set.
|
87
|
-
#
|
88
|
-
def Chars.octal
|
89
|
-
OCTAL
|
90
|
-
end
|
91
|
-
|
92
|
-
#
|
93
|
-
# The upper-case hexadecimal character set.
|
94
|
-
#
|
95
|
-
def Chars.uppercase_hexadecimal
|
96
|
-
UPPERCASE_HEXADECIMAL
|
97
|
-
end
|
98
|
-
|
99
|
-
#
|
100
|
-
# The lower-case hexadecimal character set.
|
101
|
-
#
|
102
|
-
def Chars.lowercase_hexadecimal
|
103
|
-
LOWERCASE_HEXADECIMAL
|
104
|
-
end
|
105
|
-
|
106
|
-
#
|
107
|
-
# The hexadecimal character set.
|
108
|
-
#
|
109
|
-
def Chars.hexadecimal
|
110
|
-
HEXADECIMAL
|
111
|
-
end
|
112
|
-
|
113
|
-
#
|
114
|
-
# The upper-case alpha character set.
|
115
|
-
#
|
116
|
-
def Chars.uppercase_alpha
|
117
|
-
UPPERCASE_ALPHA
|
118
|
-
end
|
119
|
-
|
120
|
-
#
|
121
|
-
# The lower-case alpha character set.
|
122
|
-
#
|
123
|
-
def Chars.lowercase_alpha
|
124
|
-
LOWERCASE_ALPHA
|
125
|
-
end
|
126
|
-
|
127
|
-
#
|
128
|
-
# The alpha character set.
|
129
|
-
#
|
130
|
-
def Chars.alpha
|
131
|
-
ALPHA
|
132
|
-
end
|
133
|
-
|
134
|
-
#
|
135
|
-
# The alpha-numeric character set.
|
136
|
-
#
|
137
|
-
def Chars.alpha_numeric
|
138
|
-
ALPHA_NUMERIC
|
139
|
-
end
|
140
|
-
|
141
|
-
#
|
142
|
-
# The punctuation character set.
|
143
|
-
#
|
144
|
-
def Chars.punctuation
|
145
|
-
PUNCTUATION
|
146
|
-
end
|
147
|
-
|
148
|
-
#
|
149
|
-
# The symbolic character set.
|
150
|
-
#
|
151
|
-
def Chars.symbols
|
152
|
-
SYMBOLS
|
153
|
-
end
|
154
|
-
|
155
|
-
#
|
156
|
-
# The space character set.
|
157
|
-
#
|
158
|
-
def Chars.space
|
159
|
-
SPACE
|
160
|
-
end
|
161
|
-
|
162
|
-
#
|
163
|
-
# The set of printable characters, including spaces.
|
164
|
-
#
|
165
|
-
def Chars.printable
|
166
|
-
PRINTABLE
|
167
|
-
end
|
168
|
-
|
169
|
-
#
|
170
|
-
# The control-char character set.
|
171
|
-
#
|
172
|
-
def Chars.control
|
173
|
-
CONTROL
|
174
|
-
end
|
175
|
-
|
176
|
-
#
|
177
|
-
# The ASCII character set.
|
178
|
-
#
|
179
|
-
def Chars.ascii
|
180
|
-
ASCII
|
181
|
-
end
|
182
|
-
|
183
|
-
#
|
184
|
-
# The full 8-bit character set.
|
185
|
-
#
|
186
|
-
def Chars.all
|
187
|
-
ALL
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
#
|
2
|
-
#--
|
3
|
-
# Ronin - A Ruby platform designed for information security and data
|
4
|
-
# exploration tasks.
|
5
|
-
#
|
6
|
-
# Copyright (c) 2006-2009 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/ui/command_line/command'
|
25
|
-
require 'ronin/platform/extension'
|
26
|
-
require 'ronin/config'
|
27
|
-
|
28
|
-
require 'fileutils'
|
29
|
-
require 'erb'
|
30
|
-
|
31
|
-
module Ronin
|
32
|
-
module UI
|
33
|
-
module CommandLine
|
34
|
-
module Commands
|
35
|
-
class Ext < Command
|
36
|
-
|
37
|
-
def defaults
|
38
|
-
@uses = []
|
39
|
-
end
|
40
|
-
|
41
|
-
def define_options(opts)
|
42
|
-
opts.usage = 'PATH [...]'
|
43
|
-
|
44
|
-
opts.arguments(
|
45
|
-
'PATH' => 'The PATH of the Extension to be created'
|
46
|
-
)
|
47
|
-
|
48
|
-
opts.summary('Create an empty Extension at the specified PATH')
|
49
|
-
end
|
50
|
-
|
51
|
-
def arguments(*args)
|
52
|
-
args.each do |path|
|
53
|
-
path = File.expand_path(path)
|
54
|
-
extension_path = File.join(path,Platform::Extension::EXTENSION_FILE)
|
55
|
-
lib_dir = File.join(path,Platform::Extension::LIB_DIR)
|
56
|
-
template_path = File.join(Config::STATIC_DIR,'extension.rb')
|
57
|
-
|
58
|
-
FileUtils.mkdir_p(path)
|
59
|
-
FileUtils.mkdir_p(lib_dir)
|
60
|
-
FileUtils.touch(File.join(lib_dir,File.basename(path) + '.rb'))
|
61
|
-
FileUtils.mkdir_p(File.join(lib_dir,File.basename(path)))
|
62
|
-
FileUtils.cp(template_path,extension_path)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|