Add New Feature Compatibility Table.
[svn.git] / build / win32 / make_gem.rb
blob12aa66e865ac5d7e0488f660e26777f816f7b8ba
1 #!/usr/bin/env ruby
3 require 'optparse'
4 require 'ostruct'
5 require 'tmpdir'
6 require 'fileutils'
8 options = OpenStruct.new
9 options.output_dir = File.expand_path(Dir.pwd)
11 opts = OptionParser.new do |opts|
12   opts.banner += " DIRECTORIES"
13   opts.on("-oDIRECTORY", "--output-dir=DIRECTORY",
14           "Output generated gem to DIRECTORY",
15           "[#{options.output_dir}]") do |dir|
16     options.output_dir = File.expand_path(dir)
17   end
19   opts.separator ""
21   opts.on("-h", "--help", "Show this message") do
22     puts opts
23     exit
24   end
25 end
27 target_dirs = opts.parse!(ARGV)
28 if target_dirs.empty?
29   puts opts
30   exit 1
31 end
33 target_dirs.each do |dir|
34   next unless File.basename(dir) == "ruby"
35   base_dir = File.expand_path(dir)
36   $LOAD_PATH.unshift(File.join(base_dir, "ext"))
37   $LOAD_PATH.unshift(File.join(base_dir, "lib"))
38 end
40 require 'svn/core'
43 archive_dir = File.join(Dir.tmpdir, "svn-ruby-gem-#{Process.pid}")
44 FileUtils.mkdir(archive_dir)
45 at_exit {FileUtils.rm_rf(archive_dir)}
47 target_dirs.each do |dir|
48   FileUtils.cp_r(dir, archive_dir)
49 end
52 generated_gem_file = nil
53 Dir.chdir(archive_dir) do
54   require 'rubygems'
55   Gem.manage_gems
57   spec = Gem::Specification.new do |s|
58     s.name = "subversion"
59     s.date = Time.now
60     s.version = Svn::Core::VER_NUM
61     s.summary = "The Ruby bindings for Subversion."
62     s.email = "dev@subversion.tigris.org"
63     s.homepage = "http://subversion.tigris.org/"
64     s.description = s.summary
65     s.authors = ["Kouhei Sutou"]
66     s.files = Dir.glob(File.join("**", "*")).delete_if {|x| /\.gem$/i =~ x}
67     s.require_paths = ["ruby/ext", "ruby/lib"]
68     s.platform = Gem::Platform::WIN32
69     s.required_ruby_version = '>= 1.8.2'
70   end
72   generated_gem_file = File.expand_path(Gem::Builder.new(spec).build)
73 end
75 gem_file = File.join(options.output_dir, File.basename(generated_gem_file))
76 FileUtils.mv(generated_gem_file, gem_file)