lib/rake_ext/project.rb in ruby_ext-0.4.25 vs lib/rake_ext/project.rb in ruby_ext-0.5.1

- old
+ new

@@ -2,28 +2,28 @@ require 'yaml' require 'psych' YAML::ENGINE.yamler = 'syck' -# +# # Helper for releasing gem, add following code to Your Rakefile: -# +# # project( # name: "fake_gem", # gem: true, # summary: "Makes any directory looks like Ruby Gem", -# +# # bin: 'bin', # executables: ['fake_gem'], # dirs: %w(bin), -# +# # author: "Alexey Petrushin", # homepage: "http://github.com/alexeypetrushin/fake_gem" # ) -# +# # use "rake gem" to release gem -# +# require 'rubygems/specification' class GemHelper class << self @@ -33,11 +33,11 @@ v[-1] = v[-1] + 1 return v.join('.') end return '0.0.1' end - + def parse_project_gemfile required_gems, required_fake_gems = [], [] gem_file = "#{project_dir}/lib/#{project[:name]}/gems.rb" if File.exist? gem_file @@ -52,11 +52,11 @@ stub.instance_eval code, __FILE__, __LINE__ end return required_gems, required_fake_gems end - + def gemspec Gem::Specification.new do |s| gems, fake_gems = parse_project_gemfile gems = gems + fake_gems @@ -71,19 +71,19 @@ s.name = name s.platform = options.delete(:platform) || Gem::Platform::RUBY s.has_rdoc = options.delete(:has_rdoc) == nil ? false : true s.require_path = options.delete(:lib) || "lib" s.files = options.delete(:files) || ( - %w{Rakefile readme.md} + - Dir.glob("{lib,spec}/**/*") + + %w{Rakefile readme.md} + + Dir.glob("{lib,spec}/**/*") + ((options[:dirs] && Array(options.delete(:dirs)).collect{|d| Dir["#{d}/**/*"]}) || []) ) s.bindir = options.delete(:bin) if options.include? :bin s.version = options.delete(:version) || GemHelper.next_version(name) - options.each{|k, v| s.send "#{k}=", v} + options.each{|k, v| s.send "#{k}=", v} end end end end @@ -97,37 +97,37 @@ puts ' building' %x(gem build #{gemspec_file}) puts ' pushing' - gem_file = Dir.glob("#{gemspec.name}*.gem").first + gem_file = Dir.glob("#{gemspec.name}*.gem").first %x"gem push #{gem_file}" puts ' cleaning' [gemspec_file, gem_file].each{|f| File.delete f if File.exist? f} puts " #{gemspec.name} #{gemspec.version} successfully released" end - + desc "Install gem required by project" task :install do - gems, fake_gems = parse_project_gemfile + gems, fake_gems = GemHelper.parse_project_gemfile gems.each do |name, version| puts "Installing gem #{name} #{version}" %x(gem install #{name}#{" -v #{version}" if version}) # --ignore-dependencies) end - end - + end + desc "List all gems required by project" task :list do puts "Gems required for #{project[:official_name]}:" - gems, fake_gems = parse_project_gemfile + gems, fake_gems = GemHelper.parse_project_gemfile puts(gems + fake_gems) end - + desc "Install all gem required by project (including fake gems)" task :install_all do - gems, fake_gems = parse_project_gemfile + gems, fake_gems = GemHelper.parse_project_gemfile (gems + fake_gems).each do |name, version| puts "Installing gem #{name} #{version}" %x(gem install #{name} #{"-v #{version}" if version}) end end \ No newline at end of file