var fs = require("fs");
var path = require("path");
var ejs = require("ejs");

var templateFolder = path.resolve("tools", "doc", "yamlTemplates");
var outputFolder = path.resolve("docs", "sourceinfo");

if (process.argv.length < 3) {
    console.log("Error: Source filename required");
    process.exit();
}

console.log(`Processing ${process.argv[2]}`);

if (!fs.existsSync(outputFolder)) {
    fs.mkdirSync(outputFolder);
}

var docData = JSON.parse(fs.readFileSync(path.resolve(process.argv[2]), "utf8"));
var tempFilename = path.resolve(templateFolder, "template.ejs");
var tempSource = fs.readFileSync(tempFilename, "utf8");
var template = ejs.compile(
    tempSource,
    {
        filename: tempFilename,
        cache: true
    }
);

searchItemsRecursively(docData);

function searchItemsRecursively(item) {
    if (interestedIn(item.kind)) {

        processItem(item);
    } else if (item.children) {
        item.children.forEach(child => {
            searchItemsRecursively(child);
        });
    }
}

function interestedIn(itemKind) {
    return (itemKind === 128) || (itemKind === 256) || (itemKind === 4194304);
}


function processItem(item) {
    var docText = template(item);

    if( item.name  === 'Widget'){
        console.log('item ' + JSON.stringify(item.name ));
    }

    fs.writeFileSync(path.resolve(outputFolder, item.name + ".yml"), docText);
}