start and end scripts run automatically
[zcc.git] / Rakefile
blob6fe1e13a994ef53c6867bd453960db6f4211c142
1 require 'rubygems'
2 require 'rake'
3 require 'rake/clean'
4 require 'rake/testtask'
5 require 'rake/packagetask'
6 require 'rake/gempackagetask'
7 require 'rake/rdoctask'
8 require 'rake/contrib/rubyforgepublisher'
9 require 'fileutils'
10 require 'hoe'
12 include FileUtils
13 require File.join(File.dirname(__FILE__), 'lib', 'zcc', 'version')
15 AUTHOR = 'Jason Ronallo'  # can also be an array of Authors
16 EMAIL = "jronallo+zcc@gmail.com"
17 DESCRIPTION = "zcc is a command line script for copy cataloging MARC records"
18 GEM_NAME = 'zcc' # what ppl will type to install your gem
20 @config_file = "~/.rubyforge/user-config.yml"
21 @config = nil
22 def rubyforge_username
23   unless @config
24     begin
25       @config = YAML.load(File.read(File.expand_path(@config_file)))
26     rescue
27       puts <<-EOS
28 ERROR: No rubyforge config file found: #{@config_file}"
29 Run 'rubyforge setup' to prepare your env for access to Rubyforge
30  - See http://newgem.rubyforge.org/rubyforge.html for more details
31       EOS
32       exit
33     end
34   end
35   @rubyforge_username ||= @config["username"]
36 end
38 RUBYFORGE_PROJECT = 'zcc' # The unix name for your project
39 HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
40 DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
42 NAME = "zcc"
43 REV = nil 
44 # UNCOMMENT IF REQUIRED: 
45 # REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
46 VERS = Zcc::VERSION::STRING + (REV ? ".#{REV}" : "")
47 CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
48 RDOC_OPTS = ['--quiet', '--title', 'zcc documentation',
49     "--opname", "index.html",
50     "--line-numbers", 
51     "--main", "README",
52     "--inline-source"]
54 class Hoe
55   def extra_deps 
56     @extra_deps.reject { |x| Array(x).first == 'hoe' } 
57   end 
58 end
60 # Generate all the Rake tasks
61 # Run 'rake -T' to see list of generated tasks (from gem root directory)
62 hoe = Hoe.new(GEM_NAME, VERS) do |p|
63   p.author = AUTHOR 
64   p.description = DESCRIPTION
65   p.email = EMAIL
66   p.summary = DESCRIPTION
67   p.url = HOMEPATH
68   p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
69   p.test_globs = ["test/**/test_*.rb"]
70   p.clean_globs |= CLEAN  #An array of file patterns to delete on clean.
71   
72   # == Optional
73   p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
74   p.extra_deps = [
75   ['marc','>=0.1.6'],
76   ['zoom', '>=0.3.0'],
77   ['unicode','>=0.1'],
78   ['highline', '>=1.2.9'],
79   ['term-ansicolor', '>=1.0.2']
80   ]     # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
81   #p.spec_extras = {}    # A hash of extra values to set in the gemspec.
82 end
84 CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\n\n")
85 PATH    = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
86 hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
88 desc 'Generate website files'
89 task :website_generate do
90   Dir['website/**/*.txt'].each do |txt|
91     sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
92   end
93 end
95 desc 'Upload website files to rubyforge'
96 task :website_upload do
97   host = "#{rubyforge_username}@rubyforge.org"
98   remote_dir = "/var/www/gforge-projects/#{PATH}/"
99   local_dir = 'website'
100   sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
103 desc 'Generate and upload website files'
104 task :website => [:website_generate, :website_upload, :publish_docs]
106 desc 'Release the website and new gem version'
107 task :deploy => [:check_version, :website, :release] do
108   puts "Remember to create SVN tag:"
109   puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
110     "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
111   puts "Suggested comment:"
112   puts "Tagging release #{CHANGES}"
115 desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
116 task :local_deploy => [:website_generate, :install_gem]
118 task :check_version do
119   unless ENV['VERSION']
120     puts 'Must pass a VERSION=x.y.z release version'
121     exit
122   end
123   unless ENV['VERSION'] == VERS
124     puts "Please update your version.rb to match the release version, currently #{VERS}"
125     exit
126   end