Rakefile in sensible-cinema-0.14.4 vs Rakefile in sensible-cinema-0.14.5

- old
+ new

@@ -7,16 +7,17 @@ s.homepage = "http://github.com/rdp" s.authors = ["Roger Pack"] s.add_dependency 'sane', '>= 0.22.0' s.add_dependency 'rdp-win32screenshot', '>= 0.0.7.3' s.add_dependency 'mini_magick', '>= 3.1' # for ocr... + s.add_dependency 'whichr', '>= 0.3.6' s.add_dependency 'jruby-win32ole' s.add_dependency 'rdp-ruby-wmi' s.add_dependency 'ffi' # mouse, etc. s.add_development_dependency 'rspec' # prefer rspec 2 I guess... s.add_development_dependency 'jeweler' - s.add_development_dependency 'hitimes' # now jruby compat. yea! + s.add_development_dependency 'hitimes' # now jruby compat! s.extensions = ["ext/mkrf_conf.rb"] end desc 'run all specs' task 'spec' do @@ -35,9 +36,71 @@ p 'at least one spec failed!', failed end end -desc 'collect gem deps for distribution zip' +def get_transitive_dependencies dependencies + new_dependencies = [] + dependencies.each{|d| + gem d.name # make sure it's loaded so that it'll be in Gem.loaded_specs + dependency_spec = Gem.loaded_specs.select{|name, spec| name == d.name}[0][1] + transitive_deps = dependency_spec.runtime_dependencies + new_dependencies << transitive_deps + } + new_dependencies.flatten +end + +desc 'collect binary and gem deps for distribution' task 'bundle_dependencies' => 'gemspec' do + require 'whichr' + require 'fileutils' + require 'net/http' + spec = eval File.read('sensible-cinema.gemspec') -end \ No newline at end of file + dependencies = spec.runtime_dependencies + dependencies = dependencies + get_transitive_dependencies(dependencies) + Gem.loaded_specs.select{|name, spec| name == 'os'} + FileUtils.rm_rf 'vendor/cache' + Dir.mkdir 'vendor/cache' + Dir.chdir 'vendor/cache' do + dependencies.each{|d| + system("gem unpack #{d.name}") + } + # add imagemagick + Dir.mkdir 'imagemagick' + im_dir = RubyWhich.new.which('identify').select{|dir| dir =~ /ImageMagick/}[0] + # "d:\\installs\\ImageMagick-6.6.2-Q16\\identify.EXE", + Dir["#{File.dirname im_dir}/*"].each{|file| + FileUtils.cp(file, 'imagemagick') rescue nil # some fail for some odd reason + } + + # jruby complete .jar file + Net::HTTP.start("jruby.org.s3.amazonaws.com") { |http| + resp = http.get("/downloads/1.5.5/jruby-complete-1.5.5.jar") + open("jruby-complete-1.5.5.jar", "wb") { |file| + file.write(resp.body) + } + } + # create a shunt win32ole file, so that require 'win32ole' will work. + Dir.mkdir 'lib' + File.write('lib/win32ole.rb', 'require "jruby-win32ole"') + + end # chdir + +end + +desc 'create distro zippable file' +task 'create_distro_dir' do + raise 'need bundle_dependencies first' unless File.directory? 'vendor/cache' + require 'fileutils' + spec = eval File.read('sensible-cinema.gemspec') + require 'ruby-debug' + #debugger + dir_out = spec.name + "-" + spec.version.version + '/sensible-cinema' + FileUtils.rm_rf dir_out + '/..' # in case it exists + existing = Dir['*'] + FileUtils.mkdir_p dir_out + FileUtils.cp_r(existing, dir_out) + # this one belongs in the trunk + FileUtils.cp("#{dir_out}/run_sensible_cinema.bat", "#{dir_out}/..") + p 'created ' + dir_out +end