/plugins/thingfish-filestore-filesystem/Rakefile
Rakefile | 104 lines | 70 code | 29 blank | 5 comment | 2 complexity | 072836ca1e31c8677002e0561a44b86a MD5 | raw file
Possible License(s): BSD-3-Clause
1#!/usr/bin/env rake
2
3require 'rake'
4require 'rake/clean'
5require 'rake/gempackagetask'
6require 'rake/rdoctask'
7require 'spec/rake/spectask'
8require 'pathname'
9require 'fileutils'
10
11
12BASEDIR = Pathname.new( __FILE__ ).dirname.expand_path
13LIBDIR = BASEDIR + 'lib'
14TF_DIR = BASEDIR.parent.parent
15TF_LIBDIR = TF_DIR + 'lib'
16
17PKG_NAME = "thingfish-filestore-filesystem"
18PKG_VERSION = "0.3.0"
19PKG_FILE_NAME = PKG_NAME + '-' + PKG_VERSION
20
21RELEASE_NAME = "REL #{PKG_VERSION}"
22
23TEXT_FILES = %w( README LICENSE )
24SPEC_FILES = Dir.glob('spec/*_spec.rb')
25LIB_FILES = Dir.glob('lib/**/*.rb').delete_if {|item| item =~ /\.svn/ }
26
27RELEASE_FILES = TEXT_FILES + LIB_FILES + SPEC_FILES
28
29
30desc "Build package if tests pass"
31task :default => [:spec, :package]
32
33### Task: spec
34Spec::Rake::SpecTask.new(:spec) do |task|
35 task.libs += [TF_LIBDIR.to_s]
36 task.spec_files = SPEC_FILES
37 task.spec_opts = ['-c', '-f','s']
38end
39
40
41### Task: rdoc
42Rake::RDocTask.new do |rdoc|
43 rdoc.rdoc_dir = 'docs/html'
44 rdoc.title = "ThingFish-FilesystemFileStore - Filesystem-based filestore plugin"
45 rdoc.options += ['-w', '4', '-SHN', '-i', BASEDIR.to_s]
46
47 rdoc.rdoc_files.include TEXT_FILES
48 rdoc.rdoc_files.include LIB_FILES
49end
50
51
52### Task: clean
53desc "Clean pkg, coverage, and rdoc; remove .bak files"
54task :clean => [ :clobber_rdoc, :clobber_package, :clobber_coverage ] do
55 files = FileList['**/*.bak']
56 files.clear_exclude
57 File.rm( files ) unless files.empty?
58end
59
60
61### Task: gem
62gemspec = Gem::Specification.new do |gem|
63 gem.name = PKG_NAME
64 gem.version = PKG_VERSION
65
66 gem.summary = "Filesystem-based ThingFish filestore plugin"
67 gem.description = "This FileStore stores resources on disk in a hierarchy of " +
68 "hashed directories. It uses NFS-safe locking for writes, and should be " +
69 "threadsafe."
70
71 gem.authors = "Michael Granger and Mahlon E. Smith"
72 gem.email = "ged@FaerieMUD.org, mahlon@martini.nu"
73 gem.homepage = "http://opensource.laika.com/wiki/ThingFish"
74
75 gem.rubyforge_project = 'laika'
76
77 gem.has_rdoc = true
78
79 gem.files = RELEASE_FILES
80 gem.test_files = SPEC_FILES
81
82 gem.files += Dir.glob( "resources/**/*" )
83
84 gem.add_dependency( 'thingfish', '>= 0.3.0' )
85 gem.add_dependency( 'lockfile', '>= 1.4.1' )
86end
87
88Rake::GemPackageTask.new( gemspec ) do |task|
89 task.gem_spec = gemspec
90 task.need_tar = true
91 task.need_zip = true
92end
93
94
95task :install => [:test, :package] do
96 installer = Gem::Installer.new( %{pkg/#{PKG_FILE_NAME}.gem} )
97 intaller.install
98end
99
100task :uninstall => [:clean] do
101 uninstaller = Gem::Uninstaller.new( name )
102 uninstaller.uninstall
103end
104