]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Separate gemspec from Rakefile
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sat, 21 Mar 2009 23:47:36 +0000 (00:47 +0100)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 22 Mar 2009 12:37:31 +0000 (13:37 +0100)
The benefit of this separation is that hosting services such as GitHub
will automatically build a gem every time the version in the spec is
changed. The underside of this separation is that hosting services such
as GitHub will automatically build a gem every time the version is
changed.

To allow the automatic gem generation to trigger on the release of
0.9.15, we demoted the version in the spec to 0.9.14. This gimmick is
needed because the gem spec doesn't allow non-numeric versions.

Since the gemspec is now standalone, it uses Dir instead of FileList,
which is equivalent for our use case. Moreover, the Rakefile only
defines the gem tasks if the spec is present.

Rakefile
rbot.gemspec [new file with mode: 0644]
tag-release

index 89b5c15d20b02277d5e154a6ea9b97fc2a76e408..435e6265ceb073e60594e6fd47ebc447afcbe2e1 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -4,54 +4,16 @@ require 'rake/gempackagetask'
 
 task :default => [:buildext]
 
-spec = Gem::Specification.new do |s|
-  s.name = 'rbot'
-  s.version = '0.9.15'
-  s.summary = <<-EOF
-    A modular ruby IRC bot.
-  EOF
-  s.description = <<-EOF
-    A modular ruby IRC bot specifically designed for ease of extension via plugins.
-  EOF
-  s.requirements << 'Ruby, version 1.8.0 (or newer)'
-
-  s.files = FileList[
-         'lib/**/*.rb',
-         'bin/*',
-         'data/rbot/**/*',
-         'AUTHORS',
-         'COPYING',
-         'README',
-         'REQUIREMENTS',
-         'TODO',
-         'ChangeLog',
-         'INSTALL',
-         'Usage_en.txt',
-         'setup.rb',
-         'launch_here.rb',
-         'po/*.pot',
-         'po/**/*.po'
-  ]
-
-  s.bindir = 'bin'
-  s.executables = ['rbot', 'rbot-remote']
-  s.default_executable = 'rbot'
-  s.extensions = 'Rakefile'
-
-#  s.autorequire = 'rbot/ircbot'
-  s.has_rdoc = true
-  s.rdoc_options = ['--exclude', 'post-install.rb',
-  '--title', 'rbot API Documentation', '--main', 'README', 'README']
-
-  s.author = 'Tom Gilbert'
-  s.email = 'tom@linuxbrit.co.uk'
-  s.homepage = 'http://ruby-rbot.org'
-  s.rubyforge_project = 'rbot'
-end
-
-Rake::GemPackageTask.new(spec) do |pkg|
-  pkg.need_zip = true
-  pkg.need_tar = true
+SPECFILE = 'rbot.gemspec'
+# The Rakefile is also used after installing the gem, to build
+# the .mo files. Since in this case the SPECFILE is not available,
+# we must (and can) skip defining the gem packaging tasks.
+if File.exist? SPECFILE
+  spec = eval(File.read(SPECFILE), nil, SPECFILE)
+  Rake::GemPackageTask.new(spec) do |pkg|
+    pkg.need_zip = true
+    pkg.need_tar = true
+  end
 end
 
 # normalize a po/pot file
diff --git a/rbot.gemspec b/rbot.gemspec
new file mode 100644 (file)
index 0000000..6369b59
--- /dev/null
@@ -0,0 +1,45 @@
+Gem::Specification.new do |s|
+  s.name = 'rbot'
+  s.version = '0.9.14'
+  s.summary = <<-EOF
+    A modular ruby IRC bot.
+  EOF
+  s.description = <<-EOF
+    A modular ruby IRC bot specifically designed for ease of extension via plugins.
+  EOF
+  s.requirements << 'Ruby, version 1.8.0 (or newer)'
+
+  s.files = Dir[
+         'lib/**/*.rb',
+         'bin/*',
+         'data/rbot/**/*',
+         'AUTHORS',
+         'COPYING',
+         'README',
+         'REQUIREMENTS',
+         'TODO',
+         'ChangeLog',
+         'INSTALL',
+         'Usage_en.txt',
+         'setup.rb',
+         'launch_here.rb',
+         'po/*.pot',
+         'po/**/*.po'
+  ]
+
+  s.bindir = 'bin'
+  s.executables = ['rbot', 'rbot-remote']
+  s.default_executable = 'rbot'
+  s.extensions = 'Rakefile'
+
+#  s.autorequire = 'rbot/ircbot'
+  s.has_rdoc = true
+  s.rdoc_options = ['--exclude', 'post-install.rb',
+  '--title', 'rbot API Documentation', '--main', 'README', 'README']
+
+  s.author = 'Tom Gilbert'
+  s.email = 'tom@linuxbrit.co.uk'
+  s.homepage = 'http://ruby-rbot.org'
+  s.rubyforge_project = 'rbot'
+end
+
index f3a1c6d8a71ccea478ffb9dbf6b96872ca55cbea..ba1b802211d9002df173e059bf846885031dc2a6 100755 (executable)
@@ -18,7 +18,7 @@ echo "Version: $VERSION"
 
 sed -i -e "/^\$version =/ c \$version = '$FULLVERSION'" launch_here.rb
 sed -i -e "/^\$version ||=/ c \$version ||= '$FULLVERSION'" bin/rbot
-sed -i -e "/^  s.version =/ c \  s.version = '$VERSION'" Rakefile
+sed -i -e "/^  s.version =/ c \  s.version = '$VERSION'" rbot.gemspec
 
 NOGIT=${FULLVERSION/-git/}
 if [ $NOGIT == $FULLVERSION ]; then