#require 'ftools'

VERSION_GLOB = '*-[0-9].[0-9].[0-9]'
VERSION_RE = %r/-(\d.\d.\d)$/
SLASH = "#{File::SEPARATOR}"

def version_rb(libsrcdir = ".#{SLASH}lib")
  glob = libsrcdir + SLASH + '*rb' 
  old = Dir[glob].select{|e| FileTest.file? e}
  old.each do |rb|
    puts("WARNING - #{rb} EXISTS")
  end
  glob = libsrcdir + SLASH + VERSION_GLOB
  libdirs = Dir[glob].select{|e| FileTest.directory? e}
  raise "NO VERSIONED LIBDIRS IN #{libsrcdir}" unless not libdirs.empty?
  libdirs.each do |libdir|
    version = VERSION_RE.match(libdir)[1] 
    lastdir = File.basename(libdir)
    vreqpath = libdir + ".rb"  
    #reqpath = libdir.sub(VERSION_RE,"") + ".rb"  
    reqpath = libdir.sub(VERSION_RE,"")
    path = File.basename(reqpath) 
#p libdir
#p dir
#p reqpath
#p path
    File.open("#{libdir}#{SLASH}VERSION","w"){|f| f.puts version}
    puts("CREATED - #{libdir}#{SLASH}VERSION")

    File.open(vreqpath,"w") do |f|
      f.puts %Q[require(File.dirname(__FILE__)<<"#{SLASH + lastdir + SLASH + path}")]
    end
    puts("CREATED - #{vreqpath}")

    File.open(reqpath + '.rb',"w") do |f|
      f.puts %Q[require(File.dirname(__FILE__)<<"#{SLASH + lastdir + SLASH + path}")]
    end
    puts("CREATED - #{reqpath}.rb")

# TODO - figure out a way to link package -> package-0.0.0
#    pwd = Dir.pwd    
#    Dir.chdir libsrcdir
#    File.rm_f File.basename(reqpath)
#    linked = File.symlink(File.basename(libdir), File.basename(reqpath))
#p File.basename(libdir)
#p File.basename(reqpath)
#    if linked
#      puts("CREATED - #{reqpath}")
#    else
#      puts("PLATFORM DOES NOT SUPPORT SOFTLINKS - COULD NOT CREATE #{reqpath}")
#    end
#    Dir.chdir pwd 
  end
end

libsrcdir = ARGV[0]
libsrcdir and version_rb(libsrcdir) or version_rb()
