1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/Rakefile
Eric Hodel ee0ea8f159 Use CPU-less platforms for windows
There is no need to include the CPU in the platform string as there is
no compiled code shipped in the pry gems.  The only difference is the
dependency.

Pry became a victim of rubygems/rubygems#1058 which will be fixed in
rubygems/rubygems#1120.  I would also like to raise awareness of proper
use of platform parts while I'm fixing the bug in RubyGems.
2015-04-09 15:41:08 -07:00

136 lines
3 KiB
Ruby

require 'rake/clean'
require 'rubygems/package_task'
$:.unshift 'lib'
require 'pry/version'
CLOBBER.include('**/*~', '**/*#*', '**/*.log')
CLEAN.include('**/*#*', '**/*#*.*', '**/*_flymake*.*', '**/*_flymake', '**/*.rbc', '**/.#*.*')
desc "Set up and run tests"
task :default => [:test]
def run_specs paths
format = ENV['VERBOSE'] ? '--format documentation ' : ''
sh "rspec -w #{format}#{paths.join ' '}"
end
desc "Run tests"
task :test do
paths =
if explicit_list = ENV['run']
explicit_list.split(',')
else
Dir['spec/**/*_spec.rb'].shuffle!
end
run_specs paths
end
task :spec => :test
task :recspec do
all = Dir['spec/**/*_spec.rb'].sort_by{|path| File.mtime(path)}.reverse
warn "Running all, sorting by mtime: #{all[0..2].join(' ')} ...etc."
run_specs all
end
desc "Run pry (you can pass arguments using _ in place of -)"
task :pry do
ARGV.shift if ARGV.first == "pry"
ARGV.map! do |arg|
arg.sub(/^_*/) { |m| "-" * m.size }
end
load 'bin/pry'
end
desc "Show pry version."
task :version do
puts "Pry version: #{Pry::VERSION}"
end
desc "Profile pry's startup time"
task :profile do
require 'profile'
require 'pry'
Pry.start(TOPLEVEL_BINDING, :input => StringIO.new('exit'))
end
def modify_base_gemspec
eval(File.read('pry.gemspec')).tap { |s| yield s }
end
namespace :ruby do
spec = modify_base_gemspec do |s|
s.platform = Gem::Platform::RUBY
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = false
pkg.need_tar = false
end
end
namespace :jruby do
spec = modify_base_gemspec do |s|
s.add_dependency('spoon', '~> 0.0')
s.platform = 'java'
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = false
pkg.need_tar = false
end
end
['mswin32', 'mingw32'].each do |platform|
namespace platform do
spec = modify_base_gemspec do |s|
s.add_dependency('win32console', '~> 1.3')
s.platform = Gem::Platform.new [nil, platform, nil]
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = false
pkg.need_tar = false
end
end
task gems: "#{platform}:gem"
end
desc "build all platform gems at once"
task :gems => [:clean, :rmgems, 'ruby:gem', 'jruby:gem']
desc "remove all platform gems"
task :rmgems => ['ruby:clobber_package']
task :rm_gems => :rmgems
task :rm_pkgs => :rmgems
desc "reinstall gem"
task :reinstall => :gems do
sh "gem uninstall pry" rescue nil
sh "gem install #{File.dirname(__FILE__)}/pkg/pry-#{Pry::VERSION}.gem"
end
task :install => :reinstall
desc "build and push latest gems"
task :pushgems => :gems do
chdir("#{File.dirname(__FILE__)}/pkg") do
Dir["*.gem"].each do |gemfile|
sh "gem push #{gemfile}"
end
end
end
namespace :docker do
desc "build a docker container with multiple rubies"
task :build do
system "docker build -t pry/pry ."
end
desc "test pry on multiple ruby versions"
task :test => :build do
system "docker run -i -t -v /tmp/prytmp:/tmp/prytmp pry/pry ./multi_test_inside_docker.sh"
end
end