#!/usr/bin/ruby

#$target = "/u1/topo/sdcard"
$target = "/run/media/tom/4CC0-7E18/topo"

unless FileTest.directory? $target
    puts "Big Problem: " + $target
    exit;
end

def make_level ( lname )
    td = $target + "/" + lname
    unless FileTest.exist? td
	Dir.mkdir td
    end
    unless FileTest.directory? td
	puts "Problem: " + td
	exit;
    end
    return td
end

$l3 = make_level "l3"
$l4 = make_level "l4"
$l5 = make_level "l5"

puts $l3

def process ( path, name )
	lname = name.downcase
	lpath = path.downcase
	return if lname !~ /tpq$/

	if ( lpath =~ /map[12]/ )
	    print path + " -- " + lname + " (SKIP)\n"
	    return
	end
	if ( lpath =~ /l3buffer/ )
	    print path + " -- " + lname + " (SKIP)\n"
	    return
	end

	# Skip these, they are level 3 maps included in
	# certain state sets, but the same coverage
	# (and for the entire nation) is
	# provided by "g" files in the SI directory
	if ( lname =~ /^f/ )
	    print path + " -- " + lname + " (SKIP)\n"
	    return
	end

	# Alaska 250K
	if ( lname =~ /^y/ )
	    print path + " -- " + lname + " (SKIP - Alaska)\n"
	    return
	end
	# Alaska 250K
	if ( lname =~ /^a/ )
	    print path + " -- " + lname + " (SKIP - Alaska)\n"
	    return
	end

	target = nil

	# 500K from SI group
	if ( lname =~ /^g/ )
	    target = "#{$l3}/#{lname}"
	end

	# 100K
	if ( lname =~ /^c/ or lname =~ /^k/ )
	    lname[0] = "c"
	    target = "#{$l4}/#{lname}"
	end

	# 24K
	if ( lname =~ /^n/ or lname =~ /^q/ )
	    lname[0] = "n"
	    target = "#{$l5}/#{lname}"
	end

	if ( target )
	    if FileTest.exists? target
		print path + " -- " + lname + " (DUPLICATE)\n"
		# XXX could do a cmp here,
		#  but I just accept the first file I find.
		return
	    end
	    cmd = "cp #{path} #{target}"
	    puts cmd
	    system cmd
	    system "chmod 444 #{target}"
	end
end

def walk ( path, name )
	if FileTest.directory? path
	    puts path + "/"
	else
	    # leaf
	    process path, name
	    return
	end

	Dir.foreach(path) { |x|
	    next if x == "."
	    next if x == ".."
	    walk path + "/" + x, x
	}
end

walk ".", ""