| 1 | # Rakefile for building tdiary-conrib package |
|---|
| 2 | require 'rake/packagetask' |
|---|
| 3 | |
|---|
| 4 | package = { |
|---|
| 5 | :name => 'tdiary-contrib', |
|---|
| 6 | :root => File.expand_path(File.dirname(__FILE__)), |
|---|
| 7 | :include_dirs => %w[doc filter lib misc plugin spec test util].map{|d| File.join d, '**', '*' }, |
|---|
| 8 | :binary_ext => %w[swf].map{|ext| ".#{ext}" }, |
|---|
| 9 | } |
|---|
| 10 | package[:pkgdir] = File.join package[:root], 'package' |
|---|
| 11 | package[:rev] = 'r' << `svnversion --no-newline --committed #{package[:root]}`[/\d+[MS]{0,2}$/] |
|---|
| 12 | package.freeze |
|---|
| 13 | |
|---|
| 14 | desc 'Update source and packaging' |
|---|
| 15 | task :default => [:update, :package, :clean] |
|---|
| 16 | |
|---|
| 17 | desc 'Run all specs' |
|---|
| 18 | task :spec do |
|---|
| 19 | require 'rake' |
|---|
| 20 | require 'spec/rake/spectask' |
|---|
| 21 | Spec::Rake::SpecTask.new do |t| |
|---|
| 22 | t.spec_files = FileList[File.join('spec', '**', '*_spec.rb')] |
|---|
| 23 | t.spec_opts = ['--options', File.join('spec', 'spec.opts')] |
|---|
| 24 | end |
|---|
| 25 | end |
|---|
| 26 | |
|---|
| 27 | desc 'Run all tests' |
|---|
| 28 | task :test do |
|---|
| 29 | require 'rake/testtask' |
|---|
| 30 | Rake::TestTask.new do |t| |
|---|
| 31 | t.libs << File.join(package[:root], 'plugin') |
|---|
| 32 | t.pattern = File.join 'test', '**', '*_test.rb' |
|---|
| 33 | end |
|---|
| 34 | end |
|---|
| 35 | |
|---|
| 36 | desc 'Update files from Subversion Repository' |
|---|
| 37 | task :update do |t| |
|---|
| 38 | sh 'svn', 'update', package[:root] |
|---|
| 39 | end |
|---|
| 40 | |
|---|
| 41 | pkg = Rake::PackageTask.new(package[:name], package[:rev]) do |p| |
|---|
| 42 | p.package_dir = package[:pkgdir] |
|---|
| 43 | p.package_files.include(package[:include_dirs]) |
|---|
| 44 | p.need_tar_gz = true |
|---|
| 45 | p.need_tar_bz2 = false |
|---|
| 46 | end |
|---|
| 47 | |
|---|
| 48 | desc 'Convert source encoding from UTF-8 to EUC-JP' |
|---|
| 49 | task :to_euc => pkg.package_dir_path |
|---|
| 50 | file pkg.package_dir_path do |t| |
|---|
| 51 | require 'shell' |
|---|
| 52 | t.prerequisites.each do |f| |
|---|
| 53 | filename = File.join pkg.package_dir_path, f |
|---|
| 54 | # exclude directories and binary files |
|---|
| 55 | next if File.ftype(filename) != 'file' || |
|---|
| 56 | package[:binary_ext].include?(File.extname(filename)) |
|---|
| 57 | |
|---|
| 58 | case |
|---|
| 59 | when Shell.new.find_system_command('nkf') |
|---|
| 60 | sh "nkf -O --euc #{filename} #{filename}.tmp && " << |
|---|
| 61 | "touch -m -r #{filename} #{filename}.tmp && " << |
|---|
| 62 | "mv #{filename}.tmp #{filename}" |
|---|
| 63 | when Shell.new.find_system_command('iconv') |
|---|
| 64 | # use iconv instead of nkf in the following another way... |
|---|
| 65 | sh <<-EOS |
|---|
| 66 | iconv --from-code=utf-8 --to-code=euc-jp --output #{filename}{.tmp,} && \ |
|---|
| 67 | touch -m -r #{filename}{,.tmp} && \ |
|---|
| 68 | mv #{filename}{.tmp,} |
|---|
| 69 | EOS |
|---|
| 70 | #else |
|---|
| 71 | # ... or require 'nkf', 'iconv' |
|---|
| 72 | end |
|---|
| 73 | end |
|---|
| 74 | touch t.name |
|---|
| 75 | end |
|---|
| 76 | |
|---|
| 77 | desc 'Clean package files' |
|---|
| 78 | task :clean do |
|---|
| 79 | rm_rf File.join(package[:pkgdir], "#{package[:name]}-#{package[:rev]}") |
|---|
| 80 | end |
|---|
| 81 | |
|---|