#! /usr/bin/env ruby

def inline_includes ifd, ofd, loaded
  ifd.lines.each { |l|
    if l =~ /^\s*require\s+['"]yaggo\/(\w+)['"]\s*$/
      file = $1
      unless loaded[file]
        loaded[file] = true
        ofd.puts("", "# Loading yaggo/#{file}", "")
        open(File.join("lib", "yaggo", file + ".rb"), "r") { |nfd|
          inline_includes(nfd, ofd, loaded)
        }
      end
    else
      ofd.print(l)
    end
  }
end

def create_binary src, dest
  loaded = {}
  open(dest, "w", 0755) do |wfd|
    open(src, "r") do |rfd|
      inline_includes(rfd, wfd, loaded)
    end
  end
  
end

if __FILE__ == $0
  dest = ARGV.shift || "yaggo"
  create_binary("bin/yaggo", dest)
end
