| #!/usr/bin/env ruby |
| |
| require 'optparse' |
| require 'ostruct' |
| require 'tmpdir' |
| require 'fileutils' |
| |
| options = OpenStruct.new |
| options.output_dir = File.expand_path(Dir.pwd) |
| |
| opts = OptionParser.new do |opts| |
| opts.banner += " DIRECTORIES" |
| opts.on("-oDIRECTORY", "--output-dir=DIRECTORY", |
| "Output generated gem to DIRECTORY", |
| "[#{options.output_dir}]") do |dir| |
| options.output_dir = File.expand_path(dir) |
| end |
| |
| opts.separator "" |
| |
| opts.on("-h", "--help", "Show this message") do |
| puts opts |
| exit |
| end |
| end |
| |
| target_dirs = opts.parse!(ARGV) |
| if target_dirs.empty? |
| puts opts |
| exit 1 |
| end |
| |
| target_dirs.each do |dir| |
| next unless File.basename(dir) == "ruby" |
| base_dir = File.expand_path(dir) |
| $LOAD_PATH.unshift(File.join(base_dir, "ext")) |
| $LOAD_PATH.unshift(File.join(base_dir, "lib")) |
| end |
| |
| require 'svn/core' |
| |
| |
| archive_dir = File.join(Dir.tmpdir, "svn-ruby-gem-#{Process.pid}") |
| FileUtils.mkdir(archive_dir) |
| at_exit {FileUtils.rm_rf(archive_dir)} |
| |
| target_dirs.each do |dir| |
| FileUtils.cp_r(dir, archive_dir) |
| end |
| |
| |
| generated_gem_file = nil |
| Dir.chdir(archive_dir) do |
| require 'rubygems' |
| Gem.manage_gems |
| |
| spec = Gem::Specification.new do |s| |
| s.name = "subversion" |
| s.date = Time.now |
| s.version = Svn::Core::VER_NUM |
| s.summary = "The Ruby bindings for Subversion." |
| s.email = "dev@subversion.tigris.org" |
| s.homepage = "http://subversion.tigris.org/" |
| s.description = s.summary |
| s.authors = ["Kouhei Sutou"] |
| s.files = Dir.glob(File.join("**", "*")).delete_if {|x| /\.gem$/i =~ x} |
| s.require_paths = ["ruby/ext", "ruby/lib"] |
| s.platform = Gem::Platform::WIN32 |
| s.required_ruby_version = '>= 1.8.2' |
| end |
| |
| generated_gem_file = File.expand_path(Gem::Builder.new(spec).build) |
| end |
| |
| gem_file = File.join(options.output_dir, File.basename(generated_gem_file)) |
| FileUtils.mv(generated_gem_file, gem_file) |