1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/Rakefile
Conrad Irwin e306ff5584 Set Pry::Slop equal to Slop (v2.4.4)
We've decided not to upgrade our slop dependency to version 3 for
several reasons:

1. People who are currently using pry in their programs are using slop
version 2; and they may not realise this. Bumping the slop dependency
could therefore break people's code in subtle ways. By removing the
dependency completely we make it obvious that breakage has occurred, and
allows programs to chose their own version of slop.

2. The new version of slop is incompatible with pry. As a command-line
tool we use our option parsing library very very intensely; and as such
we've grown used to (and even embraced) it's warts, inconcistencies and
undocumented behaviours. Upgrading the slop dependency at this point
requires a lot of fix up work both on the slop codebase and the pry
codebase.

3. The slop API is implicitly part of the pry API for defining custom
commands; by changing that API we run a significant risk of breaking
people's pry extensions.

4. The problems in 1., 2. and 3. are going to recur every time slop releases
a new version.

5. Doing this does not preclude upgrading the version of slop we use in
the future. Beacuse 1. will not occur anymore, the only breakage that we
can cause is in pry extensions; this seems resonable providing we signal
the fact that we're doing it (for example by updating the major
version number).
2012-05-28 00:29:18 -07:00

136 lines
3.3 KiB
Ruby

require 'rake/clean'
require 'rubygems/package_task'
$:.unshift 'lib'
require 'pry/version'
CLOBBER.include('**/*~', '**/*#*', '**/*.log')
CLEAN.include('**/*#*', '**/*#*.*', '**/*_flymake*.*', '**/*_flymake', '**/*.rbc', '**/.#*.*')
def apply_spec_defaults(s)
s.name = 'pry'
s.summary = "An IRB alternative and runtime developer console"
s.version = Pry::VERSION
s.date = Time.now.strftime '%Y-%m-%d'
s.authors = ["John Mair (banisterfiend)", "Conrad Irwin"]
s.email = ['jrmair@gmail.com', 'conrad.irwin@gmail.com']
s.description = s.summary
s.homepage = 'http://pry.github.com'
s.executables = ['pry']
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- test/*`.split("\n")
s.add_dependency('coderay', '~> 1.0.5')
s.add_dependency('method_source','~> 0.7.1')
s.add_development_dependency('bacon', '~> 1.1')
s.add_development_dependency('open4', '~> 1.3')
s.add_development_dependency('rake', '~> 0.9')
end
def check_dependencies
require 'bundler'
Bundler.definition.missing_specs
eval('nil', TOPLEVEL_BINDING, '<main>') # workaround for issue #395
rescue LoadError
# if Bundler isn't installed, we'll just assume your setup is ok.
rescue Bundler::GemNotFound
raise RuntimeError, "You're missing one or more required gems. Run `bundle install` first."
end
desc "Set up and run tests"
task :default => [:test]
desc "Run tests"
task :test do
check_dependencies unless ENV['SKIP_DEP_CHECK']
sh "bacon -Itest -rubygems -a -q"
end
desc "Run pry"
task :pry do
check_dependencies unless ENV['SKIP_DEP_CHECK']
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
desc "Build the gemspec file"
task :gemspec => "ruby:gemspec"
namespace :ruby do
spec = Gem::Specification.new do |s|
apply_spec_defaults(s)
s.platform = Gem::Platform::RUBY
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = false
pkg.need_tar = false
end
task :gemspec do
File.open("#{spec.name}.gemspec", "w") do |f|
f << spec.to_ruby
end
end
end
namespace :jruby do
spec = Gem::Specification.new do |s|
apply_spec_defaults(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
[:mingw32, :mswin32].each do |v|
namespace v do
spec = Gem::Specification.new do |s|
apply_spec_defaults(s)
s.add_dependency('win32console', '~> 1.3')
s.platform = "i386-#{v}"
end
Gem::PackageTask.new(spec) do |pkg|
pkg.need_zip = false
pkg.need_tar = false
end
end
end
desc "build all platform gems at once"
task :gems => [:clean, :rmgems, 'ruby:gem', 'mswin32:gem', 'mingw32:gem', 'jruby:gem']
desc "remove all platform gems"
task :rmgems => ['ruby:clobber_package']
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
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