blob: 57e0d7d301b84359a3a52d826da8748ed74b21cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# GEM TASK
require 'find'
require 'rubygems'
require 'rubygems/package'
# Unfortunately Rake::GemPackageTest cannot deal with files that are generated
# by Rake targets. So we have to write our own packaging task.
desc 'Build the gem package'
task :gem => [:clobber] do
Rake::Task[:changelog].invoke
Rake::Task[:permissions].invoke
# Build the gem file according to the loaded spec.
if RUBY_VERSION >= "2.0.0"
Gem::Package.build(GEM_SPEC)
else
Gem::Builder.new(GEM_SPEC).build
end
pkgBase = "#{GEM_SPEC.name}-#{GEM_SPEC.version}"
# Create a pkg directory if it doesn't exist already.
FileUtils.mkdir_p('pkg')
# Move the gem file into the pkg directory.
verbose(true) { FileUtils.mv("#{pkgBase}.gem", "pkg/#{pkgBase}.gem")}
end
desc 'Make sure all files and directories are readable'
task :permissions do
# Find the bin and test directories relative to this file.
baseDir = File.expand_path('..', File.dirname(__FILE__))
execs = Dir.glob("#{baseDir}/bin/*")
Find.find(baseDir) do |f|
# Ignore the whoke pkg directory as it may contain links to the other
# directories.
next if Regexp.new("#{baseDir}/pkg/*").match(f)
FileUtils.chmod_R((FileTest.directory?(f) ||
execs.include?(f) ? 0755 : 0644), f)
end
end
desc 'Run all tests and build scripts and create the gem package'
task :release do
Rake::Task[:test].invoke
Rake::Task[:yard].invoke
Rake::Task[:gem].invoke
end
|