rakefile.rb in buildar-0.2.0.1 vs rakefile.rb in buildar-0.3.0.1

- old
+ new

@@ -4,131 +4,143 @@ Rake::TestTask.new :test do |t| # FIX for your layout t.pattern = 'test/*.rb' end -PROJECT_ROOT = File.dirname(__FILE__) -PROJECT_NAME = File.split(PROJECT_ROOT).last -VERSION_FILE = File.join(PROJECT_ROOT, 'VERSION') -MANIFEST_FILE = File.join(PROJECT_ROOT, 'MANIFEST.txt') -USE_GIT = true -GIT_COMMIT_VERSION = true # commit version bump automatically -PUBLISH = { - rubygems: true, # publish .gem to http://rubygems.org/ -} +module Buildar + ############################################## + # Project-specific settings. Edit as needed. + # + # + PROJECT_ROOT = File.dirname(__FILE__) + PROJECT_NAME = File.split(PROJECT_ROOT).last + VERSION_FILE = File.join(PROJECT_ROOT, 'VERSION') + MANIFEST_FILE = File.join(PROJECT_ROOT, 'MANIFEST.txt') -def version - File.read(VERSION_FILE).chomp + USE_GIT = true + GIT_COMMIT_VERSION = true # commit version bump automatically + PUBLISH = { + rubygems: true, # publish .gem to http://rubygems.org/ + } + + def self.gemspec + Gem::Specification.new do |s| + # Static assignments + s.name = PROJECT_NAME + s.summary = "FIX" + s.description = "FIX" + s.authors = ["FIX"] + s.email = "FIX@FIX.COM" + s.homepage = "http://FIX.COM/" + s.licenses = ['FIX'] + + # Dynamic assignments + s.files = manifest + s.version = version + s.date = Time.now.strftime("%Y-%m-%d") + + # s.add_runtime_dependency "rest-client", ["~> 1"] + # s.add_runtime_dependency "json", ["~> 1"] + s.add_development_dependency "minitest", [">= 0"] + s.add_development_dependency "rake", [">= 0"] + end + end + # + # + # End project-specific settings. + ################################ + + def self.version + File.read(VERSION_FILE).chomp + end + + def self.manifest + File.readlines(MANIFEST_FILE).map { |line| line.chomp } + end + + def self.write_version new_version + File.open(VERSION_FILE, 'w') { |f| f.write(new_version) } + end + + # e.g. bump(:minor, '1.2.3') #=> '1.3.0' + # only works for integers delimited by periods (dots) + # + def self.bump(position, version) + pos = [:major, :minor, :patch, :build].index(position) || position + places = version.split('.') + raise "bad position: #{pos} (for version #{version})" unless places[pos] + places.map.with_index { |place, i| + if i < pos + place + elsif i == pos + place.to_i + 1 + else + 0 + end + }.join('.') + end end +task :version do + puts "#{Buildar::PROJECT_NAME} #{Buildar.version}" +end + task :message do unless ENV['message'] puts "Enter a one-line message:" - print " > " + print "> " ENV['message'] = $stdin.gets.chomp end end -task :version do - puts "#{PROJECT_NAME} #{version}" -end - task :tag => [:test] do - if USE_GIT - tagname = "v#{version}" + if Buildar::USE_GIT message = ENV['message'] || "auto-tagged #{tagname} by Rake" - sh "git tag -a #{tagname} -m '#{message}'" + sh "git tag -a 'v#{Buildar.version}' -m '#{message}'" sh "git push origin --tags" end end -def manifest - File.readlines(MANIFEST_FILE).map { |line| line.chomp } -end - task :manifest do - puts manifest.join("\n") + puts Buildar.manifest.join("\n") end task :build => [:test, :bump_build] do - spec = Gem::Specification.new do |s| - # Static assignments - s.name = PROJECT_NAME - s.summary = "FIX" - s.description = "FIX" - s.authors = ["FIX"] - s.email = "FIX@FIX.COM" - s.homepage = "http://FIX.COM/" - s.licenses = ['FIX'] - - # Dynamic assignments - s.files = manifest - s.version = version - s.date = Time.now.strftime("%Y-%m-%d") - -# s.add_runtime_dependency "rest-client", ["~> 1"] -# s.add_runtime_dependency "json", ["~> 1"] - s.add_development_dependency "minitest", [">= 0"] - s.add_development_dependency "rake", [">= 0"] - end - # we're definining the task at runtime, rather than requiretime # so that the gemspec will reflect any version bumping since requiretime # - Gem::PackageTask.new(spec).define + Gem::PackageTask.new(Buildar.gemspec).define Rake::Task["package"].invoke end -# e.g. bump(:minor, '1.2.3') #=> '1.3.0' -# only works for integers delimited by periods (dots) -# -def bump(position, version) - pos = [:major, :minor, :patch, :build].index(position) || position - places = version.split('.') - raise "bad position: #{pos} (for version #{version})" unless places[pos] - places.map.with_index { |place, i| - if i < pos - place - elsif i == pos - place.to_i + 1 - else - 0 - end - }.join('.') -end - -def write_version new_version - File.open(VERSION_FILE, 'w') { |f| f.write(new_version) } -end - [:major, :minor, :patch, :build].each { |v| task "bump_#{v}" do - old_version = version - new_version = bump(v, old_version) + old_version = Buildar.version + new_version = Buildar.bump(v, old_version) puts "bumping #{old_version} to #{new_version}" - write_version new_version - if USE_GIT and GIT_COMMIT_VERSION + Buildar.write_version new_version + if Buildar::USE_GIT and Buildar::GIT_COMMIT_VERSION sh "git add VERSION" sh "git commit -m 'rake bump_#{v} to #{new_version}'" end end } task :bump => [:bump_patch] task :verify_publish_credentials do - if PUBLISH[:rubygems] + if Buildar::PUBLISH[:rubygems] creds = '~/.gem/credentials' fp = File.expand_path(creds) raise "#{creds} does not exist" unless File.exists?(fp) raise "can't read #{creds}" unless File.readable?(fp) end end task :publish => [:verify_publish_credentials] do - if PUBLISH[:rubygems] - fragment = "-#{version}.gem" - pkg_dir = File.join(PROJECT_ROOT, 'pkg') + if Buildar::PUBLISH[:rubygems] + fragment = "-#{Buildar.version}.gem" + pkg_dir = File.join(Buildar::PROJECT_ROOT, 'pkg') Dir.chdir(pkg_dir) { candidates = Dir.glob "*#{fragment}" case candidates.length when 0 raise "could not find .gem matching #{fragment}" @@ -141,10 +153,10 @@ end end task :gitpush do # may prompt - sh "git push origin" if USE_GIT + sh "git push origin" if Buildar::USE_GIT # this kills the automation # use key-based auth? # consider a timeout? end