sysexits 1.0.1 → 1.0.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.tar.gz.sig +0 -0
- data/History.md +15 -0
- data/README.md +81 -18
- data/Rakefile +61 -339
- data/lib/sysexits.rb +2 -2
- data/spec/sysexits_spec.rb +2 -2
- metadata +114 -52
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -0
- data/rake/191_compat.rb +0 -26
- data/rake/dependencies.rb +0 -76
- data/rake/documentation.rb +0 -123
- data/rake/helpers.rb +0 -502
- data/rake/hg.rb +0 -287
- data/rake/manual.rb +0 -787
- data/rake/packaging.rb +0 -129
- data/rake/publishing.rb +0 -348
- data/rake/style.rb +0 -62
- data/rake/svn.rb +0 -668
- data/rake/testing.rb +0 -151
- data/rake/verifytask.rb +0 -64
data/lib/sysexits.rb
CHANGED
data/spec/sysexits_spec.rb
CHANGED
@@ -8,7 +8,7 @@ BEGIN {
|
|
8
8
|
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
9
9
|
}
|
10
10
|
|
11
|
-
require '
|
11
|
+
require 'rspec'
|
12
12
|
require 'sysexits'
|
13
13
|
|
14
14
|
describe Sysexits do
|
@@ -44,7 +44,7 @@ describe Sysexits do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
|
47
|
-
it "overrides Kernel.exit without patching any monkeys" do
|
47
|
+
it "overrides Kernel.exit without patching any monkeys. I mean freedoms. Or something." do
|
48
48
|
monkey = Class.new do
|
49
49
|
include Sysexits
|
50
50
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sysexits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Granger
|
@@ -35,19 +35,88 @@ cert_chain:
|
|
35
35
|
cmlhXe46pZNJgWKbxZah85jIjx95hR8vOI+NAM5iH9kOqK13DrxacTKPhqj5PjwF
|
36
36
|
-----END CERTIFICATE-----
|
37
37
|
|
38
|
-
date: 2010-
|
38
|
+
date: 2010-12-22 00:00:00 -08:00
|
39
39
|
default_executable:
|
40
|
-
dependencies:
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
40
|
+
dependencies:
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hoe-yard
|
43
|
+
prerelease: false
|
44
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 31
|
50
|
+
segments:
|
51
|
+
- 0
|
52
|
+
- 1
|
53
|
+
- 2
|
54
|
+
version: 0.1.2
|
55
|
+
type: :development
|
56
|
+
version_requirements: *id001
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rspec
|
59
|
+
prerelease: false
|
60
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
hash: 11
|
66
|
+
segments:
|
67
|
+
- 2
|
68
|
+
- 1
|
69
|
+
- 0
|
70
|
+
version: 2.1.0
|
71
|
+
type: :development
|
72
|
+
version_requirements: *id002
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: hoe
|
75
|
+
prerelease: false
|
76
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
hash: 47
|
82
|
+
segments:
|
83
|
+
- 2
|
84
|
+
- 8
|
85
|
+
- 0
|
86
|
+
version: 2.8.0
|
87
|
+
type: :development
|
88
|
+
version_requirements: *id003
|
89
|
+
description: "Have you ever wanted to call exit() with an error condition, but weren't sure\n\
|
90
|
+
what exit status to use? No? Maybe it's just me, then.\n\n\
|
91
|
+
Anyway, I was reading manpages late one evening before retiring to bed in my\n\
|
92
|
+
palatial estate in rural Oregon, and I stumbled across sysexits(3). Much to my\n\
|
93
|
+
chagrin, I couldn't find a 'sysexits' for Ruby! Well, for the other 2 people\n\
|
94
|
+
that actually care about style(9) as it applies to Ruby code, now there is\n\
|
95
|
+
one!\n\n\
|
96
|
+
Sysexits is a _completely awesome_ collection of human-readable constants for\n\
|
97
|
+
the standard (BSDish) exit codes, used as arguments to `Kernel.exit` to\n\
|
98
|
+
indicate a specific error condition to the parent process.\n\n\
|
99
|
+
It's so fantastically fabulous that you'll want to fork it right away to avoid\n\
|
100
|
+
being thought of as that guy that's still using Webrick for his blog. I mean,\n\
|
101
|
+
`exit(1)` is so pass\xC3\xA9! This is like the 14-point font of Systems Programming.\n\n\
|
102
|
+
Like the C header file from which this was derived (I mean forked, naturally),\n\
|
103
|
+
error numbers begin at `Sysexits::EX__BASE` (which is way more cool than plain\n\
|
104
|
+
old '64') to reduce the possibility of clashing with other exit statuses that\n\
|
105
|
+
other programs may already return.\n\n\
|
106
|
+
The codes are available in two forms: as constants which can be imported into\n\
|
107
|
+
your own namespace via `include Sysexits`, or as `Sysexits::STATUS_CODES`, a\n\
|
108
|
+
Hash keyed by Symbols derived from the constant names.\n\n\
|
109
|
+
Allow me to demonstrate. First, the old way:\n\n exit( 69 ) \n\n\
|
110
|
+
Whaaa...? Is that a euphemism? What's going on? See how unattractive and...\n\
|
111
|
+
well, 1970 that is? We're not changing vaccuum tubes here, people, we're\n\
|
112
|
+
_building a totally-awesome future in the Cloud\xE2\x84\xA2!_\n\n include Sysexits\n exit EX_UNAVAILABLE\n\n\
|
113
|
+
Okay, at least this is readable to people who have used fork() more than\n\
|
114
|
+
twice, but you could do so much better!\n\n include Sysexits\n exit :unavailable\n\n\
|
115
|
+
Holy Toledo! It's like we're writing Ruby, but our own made-up dialect in\n\
|
116
|
+
which variable++ is possible! Well, okay, it's not quite that cool. But it\n\
|
117
|
+
does look more Rubyish. And no monkeys were patched in the filming of this\n\
|
118
|
+
episode! All the simpletons still exiting with icky *numbers* can still\n\
|
119
|
+
continue blithely along, none the wiser."
|
51
120
|
email:
|
52
121
|
- ged@FaerieMUD.org
|
53
122
|
executables: []
|
@@ -55,40 +124,31 @@ executables: []
|
|
55
124
|
extensions: []
|
56
125
|
|
57
126
|
extra_rdoc_files:
|
58
|
-
-
|
59
|
-
- README.md
|
60
|
-
- LICENSE
|
127
|
+
- History.md
|
61
128
|
files:
|
62
|
-
- Rakefile
|
63
|
-
- ChangeLog
|
64
|
-
- README.md
|
65
129
|
- LICENSE
|
66
|
-
-
|
130
|
+
- README.md
|
131
|
+
- Rakefile
|
67
132
|
- lib/sysexits.rb
|
68
|
-
-
|
69
|
-
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
-
|
78
|
-
-
|
79
|
-
|
80
|
-
|
81
|
-
homepage: http://rubygems.org/gems/sysexits
|
82
|
-
licenses: []
|
83
|
-
|
84
|
-
post_install_message: Happy exiting!
|
133
|
+
- spec/sysexits_spec.rb
|
134
|
+
- History.md
|
135
|
+
has_rdoc: yard
|
136
|
+
homepage: http://deveiate.org/sysexits.html
|
137
|
+
licenses:
|
138
|
+
- BSD
|
139
|
+
post_install_message: "\n\
|
140
|
+
Get ready to be amazed. I'll bet you can't wait to Exit Like \n\
|
141
|
+
a Pro\xC2\xAE!\n\n\
|
142
|
+
Well, if you want, you can do it right from the command-line! Check \n\
|
143
|
+
this out:\n\n ruby -rubygems -e \\\n 'require \"sysexits\"; include Sysexits; exit :software_error' \\\n || echo $?\n\n\
|
144
|
+
I know, I know: so awesome right? Okay, I'll let you bask in the\n\
|
145
|
+
warn glow of superior systems-programming now.\n\n"
|
85
146
|
rdoc_options:
|
86
|
-
- --
|
87
|
-
- --
|
88
|
-
- --
|
89
|
-
-
|
90
|
-
-
|
91
|
-
- --title=sysexits
|
147
|
+
- --use-cache
|
148
|
+
- --protected
|
149
|
+
- --verbose
|
150
|
+
- --title
|
151
|
+
- Sysexits Documentation
|
92
152
|
require_paths:
|
93
153
|
- lib
|
94
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -96,10 +156,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
156
|
requirements:
|
97
157
|
- - ">="
|
98
158
|
- !ruby/object:Gem::Version
|
99
|
-
hash:
|
159
|
+
hash: 57
|
100
160
|
segments:
|
101
|
-
-
|
102
|
-
|
161
|
+
- 1
|
162
|
+
- 8
|
163
|
+
- 7
|
164
|
+
version: 1.8.7
|
103
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
166
|
none: false
|
105
167
|
requirements:
|
@@ -111,10 +173,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
173
|
version: "0"
|
112
174
|
requirements: []
|
113
175
|
|
114
|
-
rubyforge_project:
|
176
|
+
rubyforge_project: sysexits
|
115
177
|
rubygems_version: 1.3.7
|
116
178
|
signing_key:
|
117
179
|
specification_version: 3
|
118
|
-
summary:
|
119
|
-
test_files:
|
120
|
-
|
180
|
+
summary: Have you ever wanted to call exit() with an error condition, but weren't sure what exit status to use? No? Maybe it's just me, then
|
181
|
+
test_files: []
|
182
|
+
|
metadata.gz.sig
CHANGED
Binary file
|
data/ChangeLog
DELETED
File without changes
|
data/rake/191_compat.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# 1.9.1 fixes
|
2
|
-
|
3
|
-
|
4
|
-
# Make Pathname compatible with 1.8.7 Pathname.
|
5
|
-
unless Pathname.instance_methods.include?( :=~ )
|
6
|
-
class Pathname
|
7
|
-
def self::glob( *args ) # :yield: p
|
8
|
-
args = args.collect {|p| p.to_s }
|
9
|
-
if block_given?
|
10
|
-
Dir.glob(*args) {|f| yield self.new(f) }
|
11
|
-
else
|
12
|
-
Dir.glob(*args).map {|f| self.new(f) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def =~( other )
|
17
|
-
self.to_s =~ other
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_str
|
21
|
-
self.to_s
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
|
data/rake/dependencies.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Dependency-checking and Installation Rake Tasks
|
3
|
-
|
4
|
-
#
|
5
|
-
|
6
|
-
require 'rubygems/dependency_installer'
|
7
|
-
require 'rubygems/source_index'
|
8
|
-
require 'rubygems/requirement'
|
9
|
-
require 'rubygems/doc_manager'
|
10
|
-
|
11
|
-
### Install the specified +gems+ if they aren't already installed.
|
12
|
-
def install_gems( gems )
|
13
|
-
|
14
|
-
defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
|
15
|
-
:generate_rdoc => true,
|
16
|
-
:generate_ri => true,
|
17
|
-
:install_dir => Gem.dir,
|
18
|
-
:format_executable => false,
|
19
|
-
:test => false,
|
20
|
-
:version => Gem::Requirement.default,
|
21
|
-
})
|
22
|
-
|
23
|
-
# Check for root
|
24
|
-
if Process.euid != 0
|
25
|
-
$stderr.puts "This probably won't work, as you aren't root, but I'll try anyway"
|
26
|
-
end
|
27
|
-
|
28
|
-
gemindex = Gem::SourceIndex.from_installed_gems
|
29
|
-
|
30
|
-
gems.each do |gemname, reqstring|
|
31
|
-
requirement = Gem::Requirement.new( reqstring )
|
32
|
-
trace "requirement is: %p" % [ requirement ]
|
33
|
-
|
34
|
-
trace "Searching for an installed #{gemname}..."
|
35
|
-
specs = gemindex.find_name( gemname )
|
36
|
-
trace "...found %d specs: %s" %
|
37
|
-
[ specs.length, specs.collect {|s| "%s %s" % [s.name, s.version] }.join(', ') ]
|
38
|
-
|
39
|
-
if spec = specs.find {|spec| requirement.satisfied_by?(spec.version) }
|
40
|
-
log "Version %s of %s is already installed (needs %s); skipping..." %
|
41
|
-
[ spec.version, spec.name, requirement ]
|
42
|
-
next
|
43
|
-
end
|
44
|
-
|
45
|
-
rgv = Gem::Version.new( Gem::RubyGemsVersion )
|
46
|
-
installer = nil
|
47
|
-
|
48
|
-
log "Trying to install #{gemname.inspect} #{requirement}..."
|
49
|
-
if rgv >= Gem::Version.new( '1.1.1' )
|
50
|
-
installer = Gem::DependencyInstaller.new
|
51
|
-
installer.install( gemname, requirement )
|
52
|
-
else
|
53
|
-
installer = Gem::DependencyInstaller.new( gemname )
|
54
|
-
installer.install
|
55
|
-
end
|
56
|
-
|
57
|
-
installer.installed_gems.each do |spec|
|
58
|
-
log "Installed: %s" % [ spec.full_name ]
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
### Task: install runtime dependencies
|
66
|
-
desc "Install runtime dependencies as gems"
|
67
|
-
task :install_dependencies do
|
68
|
-
install_gems( DEPENDENCIES )
|
69
|
-
end
|
70
|
-
|
71
|
-
### Task: install gems for development tasks
|
72
|
-
desc "Install development dependencies as gems"
|
73
|
-
task :install_dev_dependencies do
|
74
|
-
install_gems( DEVELOPMENT_DEPENDENCIES )
|
75
|
-
end
|
76
|
-
|
data/rake/documentation.rb
DELETED
@@ -1,123 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Documentation Rake tasks
|
3
|
-
#
|
4
|
-
|
5
|
-
require 'rake/clean'
|
6
|
-
|
7
|
-
|
8
|
-
# Append docs/lib to the load path if it exists for documentation
|
9
|
-
# helpers.
|
10
|
-
DOCSLIB = DOCSDIR + 'lib'
|
11
|
-
$LOAD_PATH.unshift( DOCSLIB.to_s ) if DOCSLIB.exist?
|
12
|
-
|
13
|
-
# Make relative string paths of all the stuff we need to generate docs for
|
14
|
-
DOCFILES = Rake::FileList[ LIB_FILES + EXT_FILES + GEMSPEC.extra_rdoc_files ]
|
15
|
-
|
16
|
-
# Documentation coverage constants
|
17
|
-
COVERAGE_DIR = BASEDIR + 'coverage'
|
18
|
-
COVERAGE_REPORT = COVERAGE_DIR + 'documentation.txt'
|
19
|
-
|
20
|
-
|
21
|
-
# Prefer YARD, fallback to RDoc
|
22
|
-
begin
|
23
|
-
require 'yard'
|
24
|
-
require 'yard/rake/yardoc_task'
|
25
|
-
|
26
|
-
# Undo the lazy-assed monkeypatch yard/globals.rb installs and
|
27
|
-
# re-install them as mixins as they should have been from the
|
28
|
-
# start
|
29
|
-
# <metamonkeypatch>
|
30
|
-
class Object
|
31
|
-
remove_method :log
|
32
|
-
remove_method :P
|
33
|
-
end
|
34
|
-
|
35
|
-
module YardGlobals
|
36
|
-
def P(namespace, name = nil)
|
37
|
-
namespace, name = nil, namespace if name.nil?
|
38
|
-
YARD::Registry.resolve(namespace, name, false, true)
|
39
|
-
end
|
40
|
-
|
41
|
-
def log
|
42
|
-
YARD::Logger.instance
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class YARD::CLI::Base; include YardGlobals; end
|
47
|
-
class YARD::CLI::Command; include YardGlobals; end
|
48
|
-
class YARD::Parser::SourceParser; extend YardGlobals; include YardGlobals; end
|
49
|
-
class YARD::Parser::CParser; include YardGlobals; end
|
50
|
-
class YARD::CodeObjects::Base; include YardGlobals; end
|
51
|
-
class YARD::Handlers::Base; include YardGlobals; end
|
52
|
-
class YARD::Handlers::Processor; include YardGlobals; end
|
53
|
-
class YARD::Serializers::Base; include YardGlobals; end
|
54
|
-
class YARD::RegistryStore; include YardGlobals; end
|
55
|
-
class YARD::Docstring; include YardGlobals; end
|
56
|
-
module YARD::Templates::Helpers::ModuleHelper; include YardGlobals; end
|
57
|
-
module YARD::Templates::Helpers::HtmlHelper; include YardGlobals; end
|
58
|
-
|
59
|
-
if vvec(RUBY_VERSION) >= vvec("1.9.1")
|
60
|
-
# Monkeypatched to allow more than two '#' characters at the beginning
|
61
|
-
# of the comment line.
|
62
|
-
# Patched from yard-0.5.8
|
63
|
-
require 'yard/parser/ruby/ruby_parser'
|
64
|
-
class YARD::Parser::Ruby::RipperParser < Ripper
|
65
|
-
def on_comment(comment)
|
66
|
-
visit_ns_token(:comment, comment)
|
67
|
-
case comment
|
68
|
-
when /\A# @group\s+(.+)\s*\Z/
|
69
|
-
@groups.unshift [lineno, $1]
|
70
|
-
return
|
71
|
-
when /\A# @endgroup\s*\Z/
|
72
|
-
@groups.unshift [lineno, nil]
|
73
|
-
return
|
74
|
-
end
|
75
|
-
|
76
|
-
comment = comment.gsub(/^\#+\s{0,1}/, '').chomp
|
77
|
-
append_comment = @comments[lineno - 1]
|
78
|
-
|
79
|
-
if append_comment && @comments_last_column == column
|
80
|
-
@comments.delete(lineno - 1)
|
81
|
-
comment = append_comment + "\n" + comment
|
82
|
-
end
|
83
|
-
|
84
|
-
@comments[lineno] = comment
|
85
|
-
@comments_last_column = column
|
86
|
-
end
|
87
|
-
end # class YARD::Parser::Ruby::RipperParser
|
88
|
-
end
|
89
|
-
|
90
|
-
# </metamonkeypatch>
|
91
|
-
|
92
|
-
YARD_OPTIONS = [] unless defined?( YARD_OPTIONS )
|
93
|
-
|
94
|
-
yardoctask = YARD::Rake::YardocTask.new( :apidocs ) do |task|
|
95
|
-
task.files = DOCFILES
|
96
|
-
task.options = YARD_OPTIONS
|
97
|
-
task.options << '--debug' << '--verbose' if $trace
|
98
|
-
end
|
99
|
-
yardoctask.before = lambda {
|
100
|
-
trace "Calling yardoc like:",
|
101
|
-
" yardoc %s" % [ quotelist(yardoctask.options + yardoctask.files).join(' ') ]
|
102
|
-
}
|
103
|
-
|
104
|
-
YARDOC_CACHE = BASEDIR + '.yardoc'
|
105
|
-
CLOBBER.include( YARDOC_CACHE.to_s )
|
106
|
-
|
107
|
-
rescue LoadError
|
108
|
-
require 'rdoc/task'
|
109
|
-
|
110
|
-
desc "Build API documentation in #{API_DOCSDIR}"
|
111
|
-
RDoc::Task.new( :apidocs ) do |task|
|
112
|
-
task.main = "README"
|
113
|
-
task.rdoc_files.include( DOCFILES )
|
114
|
-
task.rdoc_dir = API_DOCSDIR.to_s
|
115
|
-
task.options = RDOC_OPTIONS
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
# Need the DOCFILES to exist to build the API docs
|
120
|
-
task :apidocs => DOCFILES
|
121
|
-
|
122
|
-
CLEAN.include( API_DOCSDIR.to_s )
|
123
|
-
|