const fs = require('fs');
const translate = require('@iamtraction/google-translate');

const defaultLang = "en";
const targetLang = process.argv[2] || "en";
const filePath = process.argv[3];
const targetLangIso = targetLang == "pt" ? "pt-pt" : targetLang;
const targetFilePath = filePath.replace(".md", "." + targetLangIso + ".md");

async function convert(text, from, to) {
    var options = {
        from: from,
        to: to
    };
    var translated_text = await translate(text, options);
    return translated_text.text;
}

console.log(filePath);
console.log(targetFilePath);

async function processFrontMatter(block) {
    var array = block.split("\n");
    var translatedBlock = "";
    for (var i = 0; i < array.length; i++) {
        if (array[i].indexOf(":") > -1) {
            var elements = array[i].split(":");
            var newElement = "";
            if (elements[0] == "title" ||
                elements[0] == "description" ||
                elements[0] == "summary" ||
                elements[0] == "description" ||
                elements[0] == "categories" ||
                elements[0] == "tags") {
                var translatedElement = elements[1] ? await convert(elements[1], defaultLang, targetLang) : elements[1];
                newElement = elements[0] + ": " + translatedElement;
            } else {
                newElement = array[i];
            }
        } else {
            newElement = array[i];
        }
        translatedBlock += newElement + "\n";
    }
    return translatedBlock;
}


async function main() {
    const fileContent = fs.readFileSync(filePath, 'utf8');

    var array = fileContent.split("---\n")
    var frontMatter = array[1];
    var content = array[2];

    var translatedFrontMatter = await processFrontMatter(frontMatter);
    var translatedContent = await convert(content, defaultLang, targetLang);

    var newFileContent = "---\n" + translatedFrontMatter + "---\n" + translatedContent;
    fs.writeFileSync(targetFilePath, newFileContent, 'utf8');
}

main();