ruby-nuggets 0.7.2 → 0.7.3

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/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to ruby-nuggets version 0.7.2
5
+ This documentation refers to ruby-nuggets version 0.7.3
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -0,0 +1,209 @@
1
+ #--
2
+ ###############################################################################
3
+ # #
4
+ # A component of ruby-nuggets, some extensions to the Ruby programming #
5
+ # language. #
6
+ # #
7
+ # Copyright (C) 2007-2011 Jens Wille #
8
+ # #
9
+ # Authors: #
10
+ # Jens Wille <jens.wille@uni-koeln.de> #
11
+ # #
12
+ # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
+ # under the terms of the GNU Affero General Public License as published by #
14
+ # the Free Software Foundation; either version 3 of the License, or (at your #
15
+ # option) any later version. #
16
+ # #
17
+ # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
18
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
19
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
20
+ # for more details. #
21
+ # #
22
+ # You should have received a copy of the GNU Affero General Public License #
23
+ # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
24
+ # #
25
+ ###############################################################################
26
+ #++
27
+
28
+ require 'optparse'
29
+ require 'yaml'
30
+ require 'zlib'
31
+ require 'highline'
32
+
33
+ module Util
34
+
35
+ class CLI
36
+
37
+ class << self
38
+
39
+ def usage(prog)
40
+ "Usage: #{prog} [-h|--help] [options]"
41
+ end
42
+
43
+ def version
44
+ parent_const_get(:VERSION)
45
+ end
46
+
47
+ def defaults
48
+ {}
49
+ end
50
+
51
+ def execute(*args)
52
+ new.execute(*args)
53
+ end
54
+
55
+ private
56
+
57
+ def parent_const_get(const, range = 0...-1)
58
+ name.split('::').inject([Object]) { |memo, name|
59
+ memo << memo.last.const_get(name)
60
+ }.reverse[range].each { |mod|
61
+ return mod.const_get(const) if mod.const_defined?(const)
62
+ }
63
+
64
+ raise NameError, "uninitialized constant #{self}::#{const}"
65
+ end
66
+
67
+ end
68
+
69
+ attr_reader :options, :config, :defaults
70
+ attr_reader :stdin, :stdout, :stderr
71
+
72
+ attr_accessor :prog
73
+
74
+ def initialize(defaults = nil, *args)
75
+ @defaults, @prog = defaults || self.class.defaults, $0
76
+
77
+ init(*args)
78
+
79
+ # prevent backtrace on ^C
80
+ trap(:INT) { exit 130 }
81
+ end
82
+
83
+ def progname
84
+ File.basename(prog)
85
+ end
86
+
87
+ def usage
88
+ self.class.usage(prog)
89
+ end
90
+
91
+ def version
92
+ self.class.version
93
+ end
94
+
95
+ def execute(arguments = ARGV, *inouterr)
96
+ reset(*inouterr)
97
+ parse_options(arguments)
98
+ run(arguments)
99
+ rescue => err
100
+ raise if $VERBOSE
101
+ abort "#{err.backtrace.first}: #{err} (#{err.class})"
102
+ ensure
103
+ options.each_value { |value|
104
+ value.close if value.is_a?(Zlib::GzipWriter)
105
+ }
106
+ end
107
+
108
+ def reset(stdin = STDIN, stdout = STDOUT, stderr = STDERR)
109
+ @stdin, @stdout, @stderr = stdin, stdout, stderr
110
+ @options, @config = {}, {}
111
+ end
112
+
113
+ private
114
+
115
+ def init(*args)
116
+ reset
117
+ end
118
+
119
+ def ask(question, &block)
120
+ HighLine.new(stdin, stdout).ask(question, &block)
121
+ end
122
+
123
+ def warn(msg)
124
+ stderr.puts(msg)
125
+ end
126
+
127
+ def quit(msg = nil, include_usage = msg != false)
128
+ out = []
129
+
130
+ out << "#{progname}: #{msg}" if msg
131
+ out << usage if include_usage
132
+
133
+ abort out.any? && out.join("\n\n")
134
+ end
135
+
136
+ def abort(msg = nil, status = 1)
137
+ warn(msg) if msg
138
+ exit(status)
139
+ end
140
+
141
+ def exit(status = 0)
142
+ Kernel.exit(status)
143
+ end
144
+
145
+ def open_file_or_std(file, write = false)
146
+ if file == '-'
147
+ write ? stdout : stdin
148
+ else
149
+ gz = file =~ /\.gz\z/i
150
+
151
+ if write
152
+ gz ? Zlib::GzipWriter.open(file) : File.open(file, 'w')
153
+ else
154
+ quit "No such file: #{file}" unless File.readable?(file)
155
+ (gz ? Zlib::GzipReader : File).open(file)
156
+ end
157
+ end
158
+ end
159
+
160
+ def parse_options(arguments)
161
+ option_parser.parse!(arguments)
162
+
163
+ config_file = options[:config] || defaults[:config]
164
+ @config = YAML.load_file(config_file) if File.readable?(config_file)
165
+
166
+ [config, defaults].each { |hash| hash.each { |key, value| options[key] ||= value } }
167
+ end
168
+
169
+ def option_parser
170
+ OptionParser.new { |opts|
171
+ opts.banner = usage
172
+
173
+ pre_opts(opts)
174
+
175
+ opts.separator ''
176
+ opts.separator 'Options:'
177
+
178
+ opts(opts)
179
+
180
+ opts.separator ''
181
+ opts.separator 'Generic options:'
182
+
183
+ generic_opts(opts)
184
+ post_opts(opts)
185
+ }
186
+ end
187
+
188
+ def pre_opts(opts)
189
+ end
190
+
191
+ def opts(opts)
192
+ end
193
+
194
+ def generic_opts(opts)
195
+ opts.on('-h', '--help', 'Print this help message and exit') {
196
+ abort opts.to_s
197
+ }
198
+
199
+ opts.on('--version', 'Print program version and exit') {
200
+ abort "#{progname} v#{version}"
201
+ }
202
+ end
203
+
204
+ def post_opts(opts)
205
+ end
206
+
207
+ end
208
+
209
+ end
@@ -4,7 +4,7 @@ module Nuggets
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 7
7
- TINY = 2
7
+ TINY = 3
8
8
 
9
9
  class << self
10
10
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-nuggets
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 2
10
- version: 0.7.2
9
+ - 3
10
+ version: 0.7.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jens Wille
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-29 00:00:00 Z
18
+ date: 2011-07-14 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Some extensions to the Ruby programming language.
@@ -40,6 +40,7 @@ files:
40
40
  - lib/nuggets/util/i18n.rb
41
41
  - lib/nuggets/util/ruby.rb
42
42
  - lib/nuggets/util/dotted_decimal.rb
43
+ - lib/nuggets/util/cli.rb
43
44
  - lib/nuggets/util/content_type.rb
44
45
  - lib/nuggets/util/ansicolor2css.rb
45
46
  - lib/nuggets/util/added_methods.rb
@@ -191,14 +192,14 @@ licenses: []
191
192
 
192
193
  post_install_message:
193
194
  rdoc_options:
195
+ - --title
196
+ - ruby-nuggets Application documentation (v0.7.3)
194
197
  - --line-numbers
195
198
  - --main
196
199
  - README
200
+ - --all
197
201
  - --charset
198
202
  - UTF-8
199
- - --title
200
- - ruby-nuggets Application documentation (v0.7.2)
201
- - --all
202
203
  require_paths:
203
204
  - lib
204
205
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
223
  requirements: []
223
224
 
224
225
  rubyforge_project: prometheus
225
- rubygems_version: 1.7.2
226
+ rubygems_version: 1.8.5
226
227
  signing_key:
227
228
  specification_version: 3
228
229
  summary: Some extensions to the Ruby programming language.