| #!/usr/bin/env ruby |
| # |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| # |
| |
| 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.apache.org" |
| s.homepage = "http://subversion.apache.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) |