/plugins/thingfish-filestore-filesystem/Rakefile

https://bitbucket.org/laika/thingfish · Rakefile · 104 lines · 70 code · 29 blank · 5 comment · 2 complexity · 072836ca1e31c8677002e0561a44b86a MD5 · raw file

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