#!/usr/bin/ruby

# Shouldn't matter since this file should NOT be released.
# /* LICENSE */

def usage(exit_val)
  print "usage: make_release <src_root_directory> <dst_directory>\n"
  exit exit_val
end

if(ARGV.size != 2)
  usage(1)
end

$src_dir = ARGV.shift
$dst_dir = ARGV.shift

# make sure destination is a directory or can be made one
begin
  filetype = File.ftype($dst_dir)
  if(filetype != "directory")
    raise ArgumentError.new("'#{$dst_dir}' exists but is not a directory")
  end
rescue Errno::ENOENT
  Dir.mkdir($dst_dir)
end

filetype = File.ftype($src_dir)
if(filetype != "directory")
  raise ArgumentError.new("'#{$src_dir}' is not a directory")
end

# copy raw data
system("cp -a #{$src_dir}/agent #{$src_dir}/util #{$dst_dir}")

# change directory to release directory
Dir.chdir($dst_dir)

# remove extra junk
system("find . -type d -name CVS -print | xargs rm -rf")
system("mv agent/release_root/* .")
system("rmdir agent/release_root")
system("find . -type f \\( -name \"*.o\" -o -name \"*.d\" -o -name \"*.dep\" \\) -print | xargs rm -f")

# hide IP addresses
replacements = Hash.new()
replacements["128.2.68.49" ]="128.2.1.1"
replacements["128.2.68.52" ]="128.2.1.2"
replacements["128.2.66.37" ]="128.2.1.3"
replacements["128.2.66.41" ]="128.2.1.4"
replacements["128.2.66.46" ]="128.2.1.5"
replacements["128.2.66.97" ]="128.2.1.6"
replacements["128.2.67.222"]="128.2.1.7"
replacements["128.2.74.10" ]="128.2.1.8"

replacements["ers01.wv.cs.cmu.edu"]="ers01.cs.cmu.edu"
replacements["ers02.wv.cs.cmu.edu"]="ers02.cs.cmu.edu"
replacements["ers03.wv.cs.cmu.edu"]="ers03.cs.cmu.edu"
replacements["ers04.wv.cs.cmu.edu"]="ers04.cs.cmu.edu"
replacements["ers05.wv.cs.cmu.edu"]="ers05.cs.cmu.edu"
replacements["ers06.wv.cs.cmu.edu"]="ers06.cs.cmu.edu"
replacements["ers07.wv.cs.cmu.edu"]="ers07.cs.cmu.edu"
replacements["ers08.wv.cs.cmu.edu"]="ers08.cs.cmu.edu"

replacements.each_pair {|key,value|
  print "replacing '#{key}' with '#{value}'\n"
  system("rep #{key} #{value} .")
}

# fixup util/RoboCup2002-05-14/ directory
# and other game manager stuff. We no longer need to move our config
# files around - we can just leave util/InterRobotComm alone.
system("rm -rf util/RoboCupGameController")
system("rm -rf util/RoboCup2002-05-14/include")
system("rm -rf util/RoboCup2002-05-14/libTeamInfo")
system("rm -rf util/RoboCup2002-05-14/RoboCupGameManager")
system("rm -rf util/RoboCup2002-05-14/RoboCupIPConfigurator")
system("rm -rf util/RoboCup2002-05-14/snap.Controller/ip.txt")

# put in license
system("change_license agent/cmu_only/release_license.txt .")

# remove stuff that shouldn't be released ever
system("rm -rf agent/cmu_only")
system("rm util/bin/make_release")
system("rm util/bin/change_license")
