sysexits 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
@@ -0,0 +1,15 @@
1
+ ## 1.0.2 [2010-12-22] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Converted to RSpec 2, Hoe.
4
+
5
+
6
+ ## 1.0.1 [2010-10-14] Michael Granger <ged@FaerieMUD.org>
7
+
8
+ Fixes for Ruby 1.9.2.
9
+
10
+
11
+ ## 1.0.0 [2010-06-19] Michael Granger <ged@FaerieMUD.org>
12
+
13
+ Initial release.
14
+
15
+
data/README.md CHANGED
@@ -1,46 +1,109 @@
1
1
  # sysexits
2
2
 
3
- Sysexits is a _completely awesome_ collection of human-readable constants for the standard (BSDish) exit codes, used as arguments to `Kernel.exit` to indicate a specific error condition to the parent process.
3
+ * http://deveiate.org/sysexits.html
4
4
 
5
- It's so fantastically fabulous that you'll want to fork it right away to avoid being thought of as that guy that's still using Webrick for his blog. I mean, `exit(1)` is so passé! This is like the 14-point font of Systems Programming.
5
+ ## Description
6
6
 
7
- Like the C header file from which this was derived (I mean forked, naturally), error numbers begin at `Sysexits::EX__BASE` (which is way more cool than plain old '64') to reduce the possibility of clashing with other exit statuses that other programs may already return.
7
+ Have you ever wanted to call exit() with an error condition, but weren't sure
8
+ what exit status to use? No? Maybe it's just me, then.
8
9
 
9
- The codes are available in two forms: as constants which can be imported into your own namespace via `include Sysexits`, or as `Sysexits::STATUS_CODES`, a Hash keyed by Symbols derived from the constant names.
10
+ Anyway, I was reading manpages late one evening before retiring to bed in my
11
+ palatial estate in rural Oregon, and I stumbled across sysexits(3). Much to my
12
+ chagrin, I couldn't find a 'sysexits' for Ruby! Well, for the other 2 people
13
+ that actually care about style(9) as it applies to Ruby code, now there is
14
+ one!
15
+
16
+ Sysexits is a _completely awesome_ collection of human-readable constants for
17
+ the standard (BSDish) exit codes, used as arguments to `Kernel.exit` to
18
+ indicate a specific error condition to the parent process.
19
+
20
+ It's so fantastically fabulous that you'll want to fork it right away to avoid
21
+ being thought of as that guy that's still using Webrick for his blog. I mean,
22
+ `exit(1)` is so passé! This is like the 14-point font of Systems Programming.
23
+
24
+ Like the C header file from which this was derived (I mean forked, naturally),
25
+ error numbers begin at `Sysexits::EX__BASE` (which is way more cool than plain
26
+ old '64') to reduce the possibility of clashing with other exit statuses that
27
+ other programs may already return.
28
+
29
+ The codes are available in two forms: as constants which can be imported into
30
+ your own namespace via `include Sysexits`, or as `Sysexits::STATUS_CODES`, a
31
+ Hash keyed by Symbols derived from the constant names.
10
32
 
11
33
  Allow me to demonstrate. First, the old way:
12
34
 
13
35
  exit( 69 )
14
36
 
15
- Whaaa...? Is that a euphemism? What's going on? See how unattractive and... well, 1970 that is? We're not changing vaccuum tubes here, people, we're _building a totally-awesome future in the Cloud™!_
37
+ Whaaa...? Is that a euphemism? What's going on? See how unattractive and...
38
+ well, 1970 that is? We're not changing vaccuum tubes here, people, we're
39
+ _building a totally-awesome future in the Cloud™!_
16
40
 
17
41
  include Sysexits
18
42
  exit EX_UNAVAILABLE
19
43
 
20
- Okay, at least this is readable to people who have used fork() more
21
- than twice, but you could do so much better!
44
+ Okay, at least this is readable to people who have used fork() more than
45
+ twice, but you could do so much better!
22
46
 
23
47
  include Sysexits
24
48
  exit :unavailable
25
49
 
26
- Holy Toledo! It's like we're writing Ruby, but our own made-up
27
- dialect in which variable++ is possible! Well, okay, it's not quite
28
- that cool. But it does look more Rubyish. And no monkeys were patched
29
- in the filming of this episode! All the simpletons still exiting
30
- with icky *numbers* can still continue blithely along, none the
31
- wiser.
50
+ Holy Toledo! It's like we're writing Ruby, but our own made-up dialect in
51
+ which variable++ is possible! Well, okay, it's not quite that cool. But it
52
+ does look more Rubyish. And no monkeys were patched in the filming of this
53
+ episode! All the simpletons still exiting with icky *numbers* can still
54
+ continue blithely along, none the wiser.
32
55
 
33
56
  ## Contributing
34
57
 
35
- You can check out the current development source with Mercurial like so:
58
+ You can clone the source with Mercurial, submit bug reports, suggestions,
59
+ etc., via the project page:
60
+
61
+ https://bitbucket.org/ged/sysexits
62
+
63
+ Or if you prefer Git, you can clone the source via its Github mirror:
64
+
65
+ https://github.com/ged/sysexits
66
+
67
+ After checking out the source, run:
36
68
 
37
- hg clone http://repo.deveiate.org/sysexits
69
+ $ rake newb
38
70
 
39
- You can submit bug reports, suggestions, and read more super-excited pointless marketing at:
71
+ This task will install any missing dependencies, run the tests/specs,
72
+ and generate the RDoc.
73
+
74
+ You can read more super-exited pointless marketing at:
40
75
 
41
76
  http://deveiate.org/sysexits.html
42
77
 
43
- # License
78
+ Or maybe not.
79
+
80
+
81
+ ## License
82
+
83
+ Copyright (c) 2010, Michael Granger
84
+ All rights reserved.
85
+
86
+ Redistribution and use in source and binary forms, with or without
87
+ modification, are permitted provided that the following conditions are met:
88
+
89
+ * Redistributions of source code must retain the above copyright notice,
90
+ this list of conditions and the following disclaimer.
91
+
92
+ * Redistributions in binary form must reproduce the above copyright notice,
93
+ this list of conditions and the following disclaimer in the documentation
94
+ and/or other materials provided with the distribution.
44
95
 
45
- See the included [LICENSE](LICENSE.html) file for licensing details.
96
+ * Neither the name of the author/s, nor the names of the project's
97
+ contributors may be used to endorse or promote products derived from this
98
+ software without specific prior written permission.
46
99
 
100
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
101
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
102
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
103
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
104
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
105
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
106
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
107
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
108
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
109
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/Rakefile CHANGED
@@ -1,365 +1,87 @@
1
- #!rake -*- ruby -*-
2
- #
3
- # sysexits rakefile
4
- #
5
- # Based on various other Rakefiles, especially one by Ben Bleything
6
- #
7
- # Copyright (c) 2007-2010 The FaerieMUD Consortium
8
- #
9
- # Authors:
10
- # * Michael Granger <ged@FaerieMUD.org>
11
- #
1
+ #!/usr/bin/env rake
2
+ #encoding: utf-8
12
3
 
13
- BEGIN {
14
- require 'rbconfig'
15
- require 'pathname'
16
- basedir = Pathname.new( __FILE__ ).dirname
4
+ require 'hoe'
17
5
 
18
- libdir = basedir + "lib"
19
- extdir = libdir + Config::CONFIG['sitearch']
6
+ Hoe.plugin :mercurial
7
+ Hoe.plugin :yard
8
+ Hoe.plugin :signing
20
9
 
21
- $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
22
- $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
23
- $LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
24
- }
10
+ Hoe.plugins.delete :rubyforge
25
11
 
26
- begin
27
- require 'readline'
28
- include Readline
29
- rescue LoadError
30
- # Fall back to a plain prompt
31
- def readline( text )
32
- $stderr.print( text.chomp )
33
- return $stdin.gets
34
- end
35
- end
12
+ hoespec = Hoe.spec 'sysexits' do
13
+ self.readme_file = 'README.md'
36
14
 
37
- begin
38
- require 'rubygems'
39
- rescue LoadError
40
- module Gem
41
- class Specification; end
42
- end
43
- end
15
+ self.developer 'Michael Granger', 'ged@FaerieMUD.org'
44
16
 
45
- require 'rbconfig'
46
- require 'rake'
47
- require 'rake/testtask'
48
- require 'rake/packagetask'
49
- require 'rake/clean'
50
- # require 'rake/191_compat.rb'
17
+ self.extra_dev_deps <<
18
+ ['rspec', '~> 2.1.0']
51
19
 
52
- $dryrun = false
20
+ self.spec_extras[:licenses] = ["BSD"]
21
+ self.spec_extras[:post_install_message] = %{
22
+ Get ready to be amazed. I'll bet you can't wait to Exit Like
23
+ a Pro®!
24
+
25
+ Well, if you want, you can do it right from the command-line! Check
26
+ this out:
27
+
28
+ ruby -rubygems -e \\
29
+ 'require "sysexits"; include Sysexits; exit :software_error' \\
30
+ || echo $?
53
31
 
54
- ### Config constants
55
- BASEDIR = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd )
56
- BINDIR = BASEDIR + 'bin'
57
- LIBDIR = BASEDIR + 'lib'
58
- EXTDIR = BASEDIR + 'ext'
59
- DOCSDIR = BASEDIR + 'docs'
60
- PKGDIR = BASEDIR + 'pkg'
61
- DATADIR = BASEDIR + 'data'
32
+ I know, I know: so awesome right? Okay, I'll let you bask in the
33
+ warn glow of superior systems-programming now.
62
34
 
63
- MANUALDIR = DOCSDIR + 'manual'
35
+ }.gsub( /^\t+/m, '' )
64
36
 
65
- PROJECT_NAME = 'sysexits'
66
- PKG_NAME = PROJECT_NAME.downcase
67
- PKG_SUMMARY = 'Exit status codes for system programs.'
37
+ self.spec_extras[:signing_key] = '/Volumes/Keys/ged-private_gem_key.pem'
68
38
 
69
- # Cruisecontrol stuff
70
- CC_BUILD_LABEL = ENV['CC_BUILD_LABEL']
71
- CC_BUILD_ARTIFACTS = ENV['CC_BUILD_ARTIFACTS'] || 'artifacts'
39
+ self.require_ruby_version( '>=1.8.7' )
40
+ self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags )
72
41
 
73
- VERSION_FILE = LIBDIR + 'sysexits.rb'
74
- if VERSION_FILE.exist? && buildrev = ENV['CC_BUILD_LABEL']
75
- PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ] + '.' + buildrev
76
- elsif VERSION_FILE.exist?
77
- PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ]
42
+ self.yard_opts = [ '--use-cache', '--protected', '--verbose' ]
43
+ self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
78
44
  end
79
45
 
80
- PKG_VERSION = '0.0.0' unless defined?( PKG_VERSION ) && !PKG_VERSION.nil?
81
-
82
- PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}"
83
- GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem"
84
-
85
- # Universal VCS constants
86
- DEFAULT_EDITOR = 'vi'
87
- COMMIT_MSG_FILE = 'commit-msg.txt'
88
- FILE_INDENT = " " * 12
89
- LOG_INDENT = " " * 3
90
-
91
- EXTCONF = EXTDIR + 'extconf.rb'
92
-
93
- ARTIFACTS_DIR = Pathname.new( CC_BUILD_ARTIFACTS )
94
-
95
- TEXT_FILES = Rake::FileList.new( %w[Rakefile ChangeLog README* LICENSE] )
96
- BIN_FILES = Rake::FileList.new( "#{BINDIR}/*" )
97
- LIB_FILES = Rake::FileList.new( "#{LIBDIR}/**/*.rb" )
98
- EXT_FILES = Rake::FileList.new( "#{EXTDIR}/**/*.{c,h,rb}" )
99
- DATA_FILES = Rake::FileList.new( "#{DATADIR}/**/*" )
100
-
101
- SPECDIR = BASEDIR + 'spec'
102
- SPECLIBDIR = SPECDIR + 'lib'
103
- SPEC_FILES = Rake::FileList.new( "#{SPECDIR}/**/*_spec.rb", "#{SPECLIBDIR}/**/*.rb" )
104
-
105
- TESTDIR = BASEDIR + 'tests'
106
- TEST_FILES = Rake::FileList.new( "#{TESTDIR}/**/*.tests.rb" )
107
-
108
- RAKE_TASKDIR = BASEDIR + 'rake'
109
- RAKE_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/*.rb" )
110
- PKG_TASKLIBS = Rake::FileList.new( "#{RAKE_TASKDIR}/{191_compat,helpers,packaging,rdoc,testing}.rb" )
111
- PKG_TASKLIBS.include( "#{RAKE_TASKDIR}/manual.rb" ) if MANUALDIR.exist?
112
-
113
- RAKE_TASKLIBS_URL = 'http://repo.deveiate.org/rake-tasklibs'
114
-
115
- LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local'
116
-
117
- EXTRA_PKGFILES = Rake::FileList.new
46
+ ENV['VERSION'] ||= hoespec.spec.version.to_s
118
47
 
119
- RELEASE_FILES = TEXT_FILES +
120
- SPEC_FILES +
121
- TEST_FILES +
122
- BIN_FILES +
123
- LIB_FILES +
124
- EXT_FILES +
125
- DATA_FILES +
126
- RAKE_TASKLIBS +
127
- EXTRA_PKGFILES
128
-
129
-
130
- RELEASE_FILES << LOCAL_RAKEFILE.to_s if LOCAL_RAKEFILE.exist?
131
-
132
- RELEASE_ANNOUNCE_ADDRESSES = [
133
- "Ruby-Talk List <ruby-talk@ruby-lang.org>",
134
- ]
135
-
136
- COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0
137
- RCOV_EXCLUDES = 'spec,tests,/Library/Ruby,/var/lib,/usr/local/lib'
138
- RCOV_OPTS = [
139
- '--exclude', RCOV_EXCLUDES,
140
- '--xrefs',
141
- '--save',
142
- '--callsites',
143
- #'--aggregate', 'coverage.data' # <- doesn't work as of 0.8.1.2.0
144
- ]
145
-
146
-
147
- ### Load some task libraries that need to be loaded early
148
- if !RAKE_TASKDIR.exist?
149
- $stderr.puts "It seems you don't have the build task directory. Shall I fetch it "
150
- ans = readline( "for you? [y]" )
151
- ans = 'y' if !ans.nil? && ans.empty?
152
-
153
- if ans =~ /^y/i
154
- $stderr.puts "Okay, fetching #{RAKE_TASKLIBS_URL} into #{RAKE_TASKDIR}..."
155
- system 'hg', 'clone', RAKE_TASKLIBS_URL, "./#{RAKE_TASKDIR}"
156
- if ! $?.success?
157
- fail "Damn. That didn't work. Giving up; maybe try manually fetching?"
48
+ begin
49
+ include Hoe::MercurialHelpers
50
+
51
+ ### Task: prerelease
52
+ desc "Append the package build number to package versions"
53
+ task :pre do
54
+ rev = get_numeric_rev()
55
+ trace "Current rev is: %p" % [ rev ]
56
+ hoespec.spec.version.version << "pre#{rev}"
57
+ Rake::Task[:gem].clear
58
+
59
+ Gem::PackageTask.new( hoespec.spec ) do |pkg|
60
+ pkg.need_zip = true
61
+ pkg.need_tar = true
158
62
  end
159
- else
160
- $stderr.puts "Then I'm afraid I can't continue. Best of luck."
161
- fail "Rake tasklibs not present."
162
63
  end
163
64
 
164
- RAKE_TASKLIBS.include( "#{RAKE_TASKDIR}/*.rb" )
165
- end
166
-
167
- require RAKE_TASKDIR + 'helpers.rb'
168
- include RakefileHelpers
169
-
170
- # Set the build ID if the mercurial executable is available
171
- if hg = which( 'hg' )
172
- id = `#{hg} id -n`.chomp
173
- PKG_BUILD = "pre%03d" % [(id.chomp[ /^[[:xdigit:]]+/ ] || '1')]
174
- else
175
- PKG_BUILD = 'pre000'
176
- end
177
- SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}"
178
- SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem"
179
-
180
- # Documentation constants
181
- API_DOCSDIR = DOCSDIR + 'api'
182
- README_FILE = TEXT_FILES.find {|path| path =~ /^README/ } || 'README'
183
- RDOC_OPTIONS = [
184
- '--tab-width=4',
185
- '--show-hash',
186
- '--include', BASEDIR.to_s,
187
- "--main=#{README_FILE}",
188
- "--title=#{PKG_NAME}",
189
- ]
190
- YARD_OPTIONS = [
191
- '--use-cache',
192
- '--no-private',
193
- '--protected',
194
- '-r', README_FILE,
195
- '--exclude', 'extconf\\.rb',
196
- '--files', 'ChangeLog,LICENSE',
197
- '--output-dir', API_DOCSDIR.to_s,
198
- '--title', "#{PKG_NAME} #{PKG_VERSION}",
199
- ]
200
-
201
- # Release constants
202
- SMTP_HOST = "mail.faeriemud.org"
203
- SMTP_PORT = 465 # SMTP + SSL
204
-
205
- # Project constants
206
- PROJECT_HOST = 'deveiate.org'
207
- PROJECT_PUBDIR = '/usr/local/www/public/code/'
208
- PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}"
209
- PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}"
210
- PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}"
211
-
212
- GEM_PUBHOST = 'rubygems.org'
213
-
214
- # Gem dependencies: gemname => version
215
- DEPENDENCIES = {
216
- }
217
-
218
- # Developer Gem dependencies: gemname => version
219
- DEVELOPMENT_DEPENDENCIES = {
220
- 'rake' => '>= 0.8.7',
221
- 'rcodetools' => '>= 0.7.0.0',
222
- 'rcov' => '>= 0.8.1.2.0',
223
- 'rdoc' => '>= 2.4.3',
224
- 'RedCloth' => '>= 4.0.3',
225
- 'rspec' => '>= 1.2.6',
226
- 'ruby-termios' => '>= 0.9.6',
227
- 'text-format' => '>= 1.0.0',
228
- 'tmail' => '>= 1.2.3.1',
229
- 'diff-lcs' => '>= 1.1.2',
230
- }
231
-
232
- # Non-gem requirements: packagename => version
233
- REQUIREMENTS = {
234
- }
235
-
236
- # RubyGem specification
237
- GEMSPEC = Gem::Specification.new do |gem|
238
- gem.name = PKG_NAME.downcase
239
- gem.version = PKG_VERSION
240
-
241
- gem.summary = PKG_SUMMARY
242
- gem.description = [
243
- "Have you ever wanted to call exit() with an error condition, but",
244
- "weren't sure what exit status to use? No? Maybe it's just me, then.",
245
- "",
246
- "Anyway, I was reading manpages late one evening before retiring to ",
247
- "bed in my palatial estate in rural Oregon, and I stumbled across ",
248
- "sysexits(3). Much to my chagrin, I couldn't find a 'sysexits' for",
249
- "Ruby! Well, for the other 2 people that actually care about style(9) ",
250
- "as it applies to Ruby code, now there is one!",
251
- ].join( "\n" )
252
- gem.post_install_message = [
253
- "Happy exiting!",
254
- ].join( "\n" )
255
-
256
- gem.authors = "Michael Granger"
257
- gem.email = ["ged@FaerieMUD.org"]
258
- gem.homepage = 'http://rubygems.org/gems/sysexits'
259
-
260
- gem.has_rdoc = true
261
- gem.rdoc_options = RDOC_OPTIONS
262
- gem.extra_rdoc_files = TEXT_FILES - [ 'Rakefile' ]
263
-
264
- gem.bindir = BINDIR.relative_path_from(BASEDIR).to_s
265
- gem.executables = BIN_FILES.select {|pn| File.executable?(pn) }.
266
- collect {|pn| File.basename(pn) }
267
- gem.require_paths << EXTDIR.relative_path_from( BASEDIR ).to_s if EXTDIR.exist?
268
-
269
- if EXTCONF.exist?
270
- gem.extensions << EXTCONF.relative_path_from( BASEDIR ).to_s
271
- end
272
-
273
- gem.files = RELEASE_FILES
274
- gem.test_files = SPEC_FILES
275
-
276
- # signing key and certificate chain
277
- gem.signing_key = '/Volumes/Keys/ged-private_gem_key.pem'
278
- gem.cert_chain = [File.expand_path('~/.gem/ged-public_gem_cert.pem')]
279
-
280
- DEPENDENCIES.each do |name, version|
281
- version = '>= 0' if version.length.zero?
282
- gem.add_runtime_dependency( name, version )
283
- end
284
-
285
- REQUIREMENTS.each do |name, version|
286
- gem.requirements << [ name, version ].compact.join(' ')
287
- end
288
- end
289
-
290
- $trace = Rake.application.options.trace ? true : false
291
- $dryrun = Rake.application.options.dryrun ? true : false
292
- $include_dev_dependencies = false
293
-
294
- # Load any remaining task libraries
295
- RAKE_TASKLIBS.each do |tasklib|
296
- next if tasklib.to_s =~ %r{/helpers\.rb$}
297
- begin
298
- trace " loading tasklib %s" % [ tasklib ]
299
- import tasklib
300
- rescue ScriptError => err
301
- fail "Task library '%s' failed to load: %s: %s" %
302
- [ tasklib, err.class.name, err.message ]
303
- trace "Backtrace: \n " + err.backtrace.join( "\n " )
304
- rescue => err
305
- log "Task library '%s' failed to load: %s: %s. Some tasks may not be available." %
306
- [ tasklib, err.class.name, err.message ]
307
- trace "Backtrace: \n " + err.backtrace.join( "\n " )
308
- end
309
- end
310
-
311
- # Load any project-specific rules defined in 'Rakefile.local' if it exists
312
- import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist?
313
-
314
-
315
- #####################################################################
316
- ### T A S K S
317
- #####################################################################
318
-
319
- ### Default task
320
- task :default => [:clean, :local, :spec, :apidocs, :package]
321
-
322
- ### Task the local Rakefile can append to -- no-op by default
323
- task :local
324
-
325
- ### Task: clean
326
- CLEAN.include 'coverage', '**/*.orig', '**/*.rej'
327
- CLOBBER.include 'artifacts', 'coverage.info', 'ChangeLog', PKGDIR
328
-
329
- ### Task: changelog
330
- file 'ChangeLog' do |task|
331
- log "Updating #{task.name}"
332
-
333
- changelog = make_changelog()
334
- File.open( task.name, 'w' ) do |fh|
335
- fh.print( changelog )
65
+ ### Make the ChangeLog update if the repo has changed since it was last built
66
+ file '.hg/branch'
67
+ file 'ChangeLog' => '.hg/branch' do |task|
68
+ $stderr.puts "Updating the changelog..."
69
+ content = make_changelog()
70
+ File.open( task.name, 'w', 0644 ) do |fh|
71
+ fh.print( content )
72
+ end
336
73
  end
337
- end
338
-
339
74
 
340
- ### Task: cruise (Cruisecontrol task)
341
- desc "Cruisecontrol build"
342
- task :cruise => [:clean, 'spec:quiet', :package] do |task|
343
- raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty?
344
- artifact_dir = ARTIFACTS_DIR.cleanpath + (CC_BUILD_LABEL || Time.now.strftime('%Y%m%d-%T'))
345
- artifact_dir.mkpath
75
+ # Rebuild the ChangeLog immediately before release
76
+ task :prerelease => 'ChangeLog'
346
77
 
347
- coverage = BASEDIR + 'coverage'
348
- if coverage.exist? && coverage.directory?
349
- $stderr.puts "Copying coverage stats..."
350
- FileUtils.cp_r( 'coverage', artifact_dir )
78
+ rescue NameError => err
79
+ task :no_hg_helpers do
80
+ fail "Couldn't define the :pre task: %s: %s" % [ err.class.name, err.message ]
351
81
  end
352
82
 
353
- $stderr.puts "Copying packages..."
354
- FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )
355
- end
356
-
83
+ task :pre => :no_hg_helpers
84
+ task 'ChangeLog' => :no_hg_helpers
357
85
 
358
- desc "Update the build system to the latest version"
359
- task :update_build do
360
- log "Updating the build system"
361
- run 'hg', '-R', RAKE_TASKDIR, 'pull', '-u'
362
- log "Updating the Rakefile"
363
- sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile'
364
86
  end
365
87