summaryrefslogtreecommitdiffstats
path: root/tasks/setup.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tasks/setup.rb')
-rw-r--r--tasks/setup.rb129
1 files changed, 129 insertions, 0 deletions
diff --git a/tasks/setup.rb b/tasks/setup.rb
new file mode 100644
index 0000000..5e69d02
--- /dev/null
+++ b/tasks/setup.rb
@@ -0,0 +1,129 @@
+# -*- coding: UTF-8 -*-
+#
+require 'rubygems'
+require 'rake'
+require 'rake/clean'
+require 'ostruct'
+
+class OpenStruct; undef :gem; end
+
+# TODO: make my own openstruct type object that includes descriptions
+# TODO: use the descriptions to output help on the available bones options
+
+PROJ = OpenStruct.new(
+ # Project Defaults
+ :name => nil,
+ :summary => nil,
+ :description => nil,
+ :changes => nil,
+ :authors => nil,
+ :email => nil,
+ :url => "\000",
+ :version => ENV['VERSION'] || '0.0.0',
+ :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
+ :release_name => ENV['RELEASE'],
+
+ # System Defaults
+ :ruby_opts => %w(-w),
+ :libs => [],
+ :history_file => 'Changelog',
+ :readme_file => 'README.rdoc',
+ :ignore_file => '.bnsignore',
+
+ # Announce
+ :ann => OpenStruct.new(
+ :file => 'announcement.txt',
+ :text => nil,
+ :paragraphs => [],
+ :email => {
+ :from => nil,
+ :to => %w(ruby-talk@ruby-lang.org),
+ :server => 'localhost',
+ :port => 25,
+ :domain => ENV['HOSTNAME'],
+ :acct => nil,
+ :passwd => nil,
+ :authtype => :plain,
+ :tls => true,
+ }
+ ),
+
+ # Gem Packaging
+ :gem => OpenStruct.new(
+ :dependencies => [],
+ :development_dependencies => [],
+ :executables => nil,
+ :extensions => FileList['ext/**/extconf.rb'],
+ :files => nil,
+ :need_tar => true,
+ :need_zip => false,
+ :extras => {}
+ ),
+
+ # File Annotations
+ :notes => OpenStruct.new(
+ :exclude => %w(^tasks/setup\.rb$),
+ :extensions => %w(.txt .rb .erb .rdoc) << '',
+ :tags => %w(FIXME OPTIMIZE TODO)
+ ),
+
+ # Rcov
+ :rcov => OpenStruct.new(
+ :dir => 'coverage',
+ :opts => %w[--sort coverage -T -x lib/rcov],
+ :threshold => 90.0,
+ :threshold_exact => false
+ ),
+
+ # Rdoc
+ :rdoc => OpenStruct.new(
+ :opts => [],
+ :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
+ :exclude => %w(extconf\.rb$),
+ :main => nil,
+ :dir => 'doc',
+ :remote_dir => nil
+ ),
+
+ # Rubyforge
+ :rubyforge => OpenStruct.new(
+ :name => "\000"
+ ),
+
+ # Rspec
+ :spec => OpenStruct.new(
+ :files => FileList['spec/**/*_spec.rb'],
+ :opts => []
+ ),
+
+ # Subversion Repository
+ :svn => OpenStruct.new(
+ :root => nil,
+ :path => '',
+ :trunk => 'trunk',
+ :tags => 'tags',
+ :branches => 'branches'
+ ),
+
+ # Test::Unit
+ :test => OpenStruct.new(
+ :files => FileList['test/**/test_*.rb'],
+ :file => 'test/all.rb',
+ :opts => []
+ )
+)
+
+# Load the other rake files in the tasks folder
+tasks_dir = File.expand_path(File.dirname(__FILE__))
+post_load_fn = File.join(tasks_dir, 'post_load.rake')
+rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
+rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
+import(*rakefiles)
+
+# Setup the project libraries
+%w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
+
+load './tasks/constants.rb'
+load './tasks/helpers.rb'
+
+# EOF