#!/usr/bin/env ruby

require 'bundler'

unless ARGV.length == 1
  $stderr.puts "usage: vendorize path-to-gems"
  exit 64
end

TARGET_PATH = ARGV.first
SETUP_PATH = File.join(TARGET_PATH, 'setup.rb')

FileUtils.mkdir_p(TARGET_PATH)

File.open(SETUP_PATH, 'w') do |setup_file|
  Bundler.definition.specs_for([:dist]).each do |gem|
    if gem.name != 'bundler'
      system(
        '/usr/bin/env', 'gem', 'unpack',
        '--target', TARGET_PATH,
        '--version', gem.version.to_s,
        gem.name
      )

      template = "$LOAD_PATH.unshift(File.expand_path(%s, __FILE__))"
      gem.require_paths.each do |path|
        full_path = "../#{gem.name}-#{gem.version}/#{path}"
        setup_file.puts(template % full_path.inspect)
      end
    end
  end
end
