From 80747fe28c40403bd07473c2bc7fad19cb562fcd Mon Sep 17 00:00:00 2001 From: elijah Date: Wed, 24 Oct 2012 21:40:11 -0700 Subject: created 'rake build' and 'rake install', updated README. --- Rakefile | 103 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 68 insertions(+), 35 deletions(-) (limited to 'Rakefile') diff --git a/Rakefile b/Rakefile index c97688b..51c980e 100644 --- a/Rakefile +++ b/Rakefile @@ -1,44 +1,77 @@ -require 'rake/clean' -require 'rubygems' -require 'rubygems/package_task' -require 'rdoc/task' -require 'cucumber' -require 'cucumber/rake/task' -Rake::RDocTask.new do |rd| - rd.main = "README.rdoc" - rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*") - rd.title = 'Your application title' -end +require "rubygems" +require "highline/import" +require "pty" +require "fileutils" -spec = eval(File.read('leap_cli.gemspec')) +## +## HELPER +## -Gem::PackageTask.new(spec) do |pkg| +def run(cmd) + PTY.spawn(cmd) do |output, input, pid| + begin + while line = output.gets do + puts line + end + rescue Errno::EIO + end + end +rescue PTY::ChildExited end -CUKE_RESULTS = 'results.html' -CLEAN << CUKE_RESULTS -desc 'Run features' -Cucumber::Rake::Task.new(:features) do |t| - opts = "features --format html -o #{CUKE_RESULTS} --format progress -x" - opts += " --tags #{ENV['TAGS']}" if ENV['TAGS'] - t.cucumber_opts = opts - t.fork = false + +## +## GEM BUILDING AND INSTALLING +## + +$spec_path = 'leap_cli.gemspec' +$spec = eval(File.read($spec_path)) +$base_dir = File.dirname(__FILE__) +$gem_path = File.join($base_dir, 'pkg', "#{$spec.name}-#{$spec.version}.gem") + +def built_gem_path + Dir[File.join($base_dir, "#{$spec.name}-*.gem")].sort_by{|f| File.mtime(f)}.last end -desc 'Run features tagged as work-in-progress (@wip)' -Cucumber::Rake::Task.new('features:wip') do |t| - tag_opts = ' --tags ~@pending' - tag_opts = ' --tags @wip' - t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}" - t.fork = false +desc "Build #{$spec.name}-#{$spec.version}.gem into the pkg directory" +task 'build' do + FileUtils.mkdir_p(File.join($base_dir, 'pkg')) + FileUtils.rm($gem_path) if File.exists?($gem_path) + run "gem build -V '#{$spec_path}'" + file_name = File.basename(built_gem_path) + FileUtils.mv(built_gem_path, 'pkg') + say "#{$spec.name} #{$spec.version} built to pkg/#{file_name}" end -task :cucumber => :features -task 'cucumber:wip' => 'features:wip' -task :wip => 'features:wip' -require 'rake/testtask' -Rake::TestTask.new do |t| - t.libs << "test" - t.test_files = FileList['test/*_test.rb'] +desc "Build and install #{$spec.name}-#{$spec.version}.gem into either system-wide or user gems" +task 'install' do + if !File.exists?($gem_path) + say("Could not file #{$gem_path}. Try running 'rake build'") + else + if ENV["USER"] == "root" + run "gem install '#{$gem_path}'" + else + say("A system-wide install requires that you run 'rake install' as root, which you are not.") + if agree("Do you want to continue installing to #{Gem.path.grep /home/}? ") + run "gem install '#{$gem_path}' --user-install" + end + end + end end -task :default => [:test,:features] +## +## TESTING +## + +# task :default => [:test,:features] + +## +## DOCUMENTATION +## + +# require 'rdoc/task' + +# Rake::RDocTask.new do |rd| +# rd.main = "README.rdoc" +# rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*") +# rd.title = 'Your application title' +# end -- cgit v1.2.3