cowtech-lib 1.9.7.0 → 1.9.8.0
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/cowtech-lib.gemspec +2 -2
- data/lib/cowtech-lib/option_parser.rb +29 -14
- data/lib/cowtech-lib/shell.rb +4 -4
- data/lib/cowtech-lib/version.rb +1 -1
- metadata +6 -6
data/cowtech-lib.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "cowtech-lib"
|
8
|
-
s.version = "1.9.
|
8
|
+
s.version = "1.9.8.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Shogun"]
|
12
|
-
s.date = "2012-01-
|
12
|
+
s.date = "2012-01-11"
|
13
13
|
s.description = "A general purpose utility library."
|
14
14
|
s.email = "shogun_panda@me.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -104,7 +104,7 @@ module Cowtech
|
|
104
104
|
if option[:choices] == nil then
|
105
105
|
@console.fatal(:msg => "Option \"#{option[:name]}\" of type choice requires a valid choices list (every element should be a regular expression).")
|
106
106
|
else
|
107
|
-
option[:choices].collect!
|
107
|
+
option[:choices].collect! { |choice| Regexp.new(choice) }
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
@@ -134,7 +134,7 @@ module Cowtech
|
|
134
134
|
args ||= {}
|
135
135
|
# Create options
|
136
136
|
noat = [:bool, :action]
|
137
|
-
sopts = @options.each_value.collect
|
137
|
+
sopts = @options.each_value.collect { |option| [option[:long], option[:short], noat.include?(option[:type]) ? GetoptLong::NO_ARGUMENT : GetoptLong::REQUIRED_ARGUMENT] }
|
138
138
|
|
139
139
|
opts = GetoptLong.new(*sopts)
|
140
140
|
opts.quiet = true
|
@@ -146,17 +146,28 @@ module Cowtech
|
|
146
146
|
option = @options[optname]
|
147
147
|
value = nil
|
148
148
|
|
149
|
-
|
150
149
|
# VALIDATE ARGUMENT DUE TO CASE
|
151
150
|
case option[:type]
|
152
151
|
when :string then
|
153
152
|
value = arg
|
154
153
|
when :int then
|
155
|
-
if arg.strip =~ /^(-?)(\d+)$/ then
|
154
|
+
if arg.strip =~ /^(-?)(\d+)$/ then
|
155
|
+
value = arg.to_i(10)
|
156
|
+
else
|
157
|
+
@console.fatal(:msg => "Argument of option \"#{given}\" must be an integer.", :dots => false)
|
158
|
+
end
|
156
159
|
when :float then
|
157
|
-
if arg.strip =~ /^(-?)(\d*)(\.(\d+))?$/ && arg.strip() != "." then
|
160
|
+
if arg.strip =~ /^(-?)(\d*)(\.(\d+))?$/ && arg.strip() != "." then
|
161
|
+
value = arg.to_f
|
162
|
+
else
|
163
|
+
@console.fatal(:msg => "Argument of option \"#{given}\" must be a float.", :dots => false)
|
164
|
+
end
|
158
165
|
when :choice then
|
159
|
-
if @options[optname].choices.find_index { |choice| arg =~ choice } then
|
166
|
+
if @options[optname].choices.find_index { |choice| arg =~ choice } then
|
167
|
+
value = arg
|
168
|
+
else
|
169
|
+
@console.fatal(:msg => "Invalid argument (invalid choice) for option \"#{given}\".", :dots => false)
|
170
|
+
end
|
160
171
|
when :list then
|
161
172
|
value = arg.split(",")
|
162
173
|
else
|
@@ -264,17 +275,17 @@ module Cowtech
|
|
264
275
|
# Print app name
|
265
276
|
if @app_name then
|
266
277
|
print "#{@app_name}"
|
267
|
-
|
268
|
-
|
278
|
+
print " #{@app_version}" if @app_version > 0
|
279
|
+
print " - #{@description}" if @description
|
269
280
|
print "\n"
|
270
281
|
end
|
271
282
|
|
272
283
|
# Print usage
|
273
|
-
|
274
|
-
print "#{
|
284
|
+
print "#{@messages["pre_usage"]}\n" if @messages["pre_usage"]
|
285
|
+
print "#{@usage ? @usage : "Usage: #{ARGV[0]} [OPTIONS]"}\n"
|
275
286
|
|
276
287
|
# Print pre_options
|
277
|
-
|
288
|
+
print "#{@messages["pre_options"]}\n" if @messages["pre_options"]
|
278
289
|
print "\nValid options are:\n"
|
279
290
|
|
280
291
|
# Order options for printing
|
@@ -289,7 +300,7 @@ module Cowtech
|
|
289
300
|
opt = @options[key]
|
290
301
|
|
291
302
|
popt = "#{[opt[:short], opt[:long]].join(", ")}"
|
292
|
-
popt += ("=" + (
|
303
|
+
popt += ("=" + (opt[:meta] ? opt[:meta] : "ARG")) if ![:bool, :action].include?(opt[:type])
|
293
304
|
popts[key] = popt
|
294
305
|
maxlen = popt.length if popt.length > maxlen
|
295
306
|
end
|
@@ -301,7 +312,7 @@ module Cowtech
|
|
301
312
|
end
|
302
313
|
|
303
314
|
# Print post_options
|
304
|
-
|
315
|
+
print "#{@messages["post_options"]}\n" if @messages["post_options"] then
|
305
316
|
end
|
306
317
|
|
307
318
|
#Creates a new OptionParser.
|
@@ -327,7 +338,11 @@ module Cowtech
|
|
327
338
|
|
328
339
|
# Copy messages
|
329
340
|
messages = args[:messages] || {}
|
330
|
-
if messages.is_a?(Hash) then
|
341
|
+
if messages.is_a?(Hash) then
|
342
|
+
@messages = messages
|
343
|
+
else
|
344
|
+
@console.fatal(:msg => "CowtechLib::OptionParser::initialize msgs argument must be an hash.")
|
345
|
+
end
|
331
346
|
|
332
347
|
# Initialize variables
|
333
348
|
@console = Console.new
|
data/lib/cowtech-lib/shell.rb
CHANGED
@@ -243,13 +243,13 @@ module Cowtech
|
|
243
243
|
end
|
244
244
|
rescue StandardError => e
|
245
245
|
if args[:show_errors] && e.message =~ /^Permission denied - (.+)/ then
|
246
|
-
self.error("Cannot #{
|
246
|
+
self.error("Cannot #{must_move ? "move" : "copy"} entry <text style=\"bold white\">#{file}</text> to non-writable entry <text style=\"bold white\">#{dest}</text>", false, false, false) if m != nil
|
247
247
|
end
|
248
248
|
|
249
249
|
rv = false
|
250
250
|
rescue Exception => e
|
251
251
|
if args[:show_errors] then
|
252
|
-
@console.error("Cannot #{
|
252
|
+
@console.error("Cannot #{move ? "move" : "copy"} following entries to <text style=\"bold white\">#{dest}</text>:", :dots => false)
|
253
253
|
@console.indent_region(3) do
|
254
254
|
files.each do |afile|
|
255
255
|
@console.write(:msg => afile, :dots => false)
|
@@ -283,10 +283,10 @@ module Cowtech
|
|
283
283
|
FileUtils.cp(files, dest, {:noop => @console.skip_commands, :verbose => @console.skip_commands})
|
284
284
|
end
|
285
285
|
rescue StandardError => e
|
286
|
-
@console.error("Cannot #{
|
286
|
+
@console.error("Cannot #{move ? "move" : "copy"} entry <text style=\"bold white\">#{files}</text> to non-writable entry<text style=\"bold white\"> #{dest}</text>", :dots => false, :fatal => args[:fatal]) if args[:show_errors] && (e.message =~ /^Permission denied - (.+)/)
|
287
287
|
rv = false
|
288
288
|
rescue Exception => e
|
289
|
-
@console.error("Cannot #{
|
289
|
+
@console.error("Cannot #{move ? "move" : "copy"} <text style=\"bold white\">#{files}</text> to <text style=\"bold_white\">#{dest}</text> due to an error: <text style=\"bold red\">#{e}</text>", :dots => false, :fatal => args[:fatal]) if args[:show_errors]
|
290
290
|
rv = false
|
291
291
|
end
|
292
292
|
end
|
data/lib/cowtech-lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cowtech-lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.8.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jeweler
|
16
|
-
requirement: &
|
16
|
+
requirement: &70357825387040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70357825387040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: open4
|
27
|
-
requirement: &
|
27
|
+
requirement: &70357825386560 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70357825386560
|
36
36
|
description: A general purpose utility library.
|
37
37
|
email: shogun_panda@me.com
|
38
38
|
executables: []
|