#!/usr/bin/env coffee

{Converter}            = require("crafting-guide-common").deprecated
fs                     = require "fs"
{Logger}               = require("crafting-guide-common").util
{Mod}                  = require("crafting-guide-common").deprecated.game
{ModPack}              = require("crafting-guide-common").deprecated.game
{ModPackJsonFormatter} = require("crafting-guide-common").parsing
{ModVersion}           = require("crafting-guide-common").deprecated.game
{ModVersionParser}     = require("crafting-guide-common").deprecated.parsing
path                   = require "path"

########################################################################################################################

global.logger = new Logger level:Logger.INFO

try
    modPack = new ModPack

    modSlugs = fs.readdirSync "data"
    for modSlug in modSlugs
        try
            modVersions = fs.readdirSync path.join "data", modSlug, "versions"
        catch e
            continue # skip this mod, it has no mod version data

        lastVersion = modVersions.pop()
        text = fs.readFileSync path.join("data", modSlug, "versions", lastVersion, "mod-version.cg"), "UTF-8"

        modVersion = new ModVersion modSlug:modSlug, version:lastVersion
        parser = new ModVersionParser model:modVersion
        parser.parse text

        mod = new Mod slug:modSlug
        text = fs.readFileSync path.join("data", modSlug, "mod.cg"), "UTF-8"
        mod.parse text
        mod.addModVersion modVersion

        modPack.addMod mod

    converter = new Converter
    newModPack = converter.convert "crafting-guide", "Crafting Guide", modPack

    formatter = new ModPackJsonFormatter
    json = formatter.format newModPack
    fs.writeFileSync path.join("data", "modpacks", "#{newModPack.id}.json"), json, encoding:"UTF-8"
catch e
    console.error e.stack
