#!/usr/bin/ruby

require 'rpa/base'
require 'rpa/util'
require 'rpa/install'
require 'rpa/package'
require 'yaml'

unless ARGV.size == 2
    puts <<EOF
Syntax:
    rpa-buildport <port dir> <info file>
EOF
    exit
end

portinfo = YAML.load File.read(ARGV[1])
portdir = ARGV[0]
baseurl = "http://rpa-base.rubyforge.org/ports"

RPA::Install.auto_install = false
next unless File.dir? portdir
puts "Loading #{portdir}/install.rb"
Dir.chdir(portdir) { load "install.rb" }
meta = RPA::Install.children.last.metadata
dest = %w[name version].map{|x| meta[x]}.join "_"
url = baseurl + (baseurl[-1] == '/' ? "": '/') + dest + ".rps"
meta.delete "platform" # don't want it for now
newentry = {"metadata" => meta, "url" => url }       
puts "Creating #{dest}.rps"
RPA::Package.pack(portdir, "#{dest}.rps")

portinfo = portinfo.reject{|x| x["metadata"]["name"] == meta["name"]}
portinfo << newentry

portinfo = portinfo.sort_by{|x| x["metadata"]["name"]}

File.open("ports.info", "w") {|f| f.write portinfo.to_yaml}
File.open(ARGV[1], "w") {|f| f.write portinfo.to_yaml}
