var program = require('commander');
var fs = require('fs');
var path = require('path');
var ncp = require('ncp').ncp;
var rimraf = require('rimraf');

ncp.limit = 16;

replaceHrefInIndex = (href) => {
    fs.readFile(`demo-shell/dist/${href}/index.html`, 'utf8', function (err, data) {
        if (err) {
            return console.log(err);
        }

        let result = data.replace(`base href="/"`, `base href=\"/${href}/\"`);

        fs.writeFile(`demo-shell/dist/${href}/index.html`, result, 'utf8', function (err) {
            if (err) return console.log(err);
        });
    });
};


async function main() {

    program
        .version('0.1.0')
        .option('--base-href  [type]', '')
        .parse(process.argv);


    let outputTemp = path.resolve(__dirname, '../../../demo-shell/', program.baseHref);
    console.log('output ' + outputTemp);

    let distFolder = path.resolve(__dirname, '../../../demo-shell/dist');

    fs.rename(distFolder, outputTemp, (err) => {
        if (err) throw err;
        console.log('renamed complete');

        let distFolderNew = path.resolve(__dirname, '../../../demo-shell/dist', program.baseHref);

        if (!fs.existsSync(distFolderNew)){
            fs.mkdirSync(distFolder);
            fs.mkdirSync(distFolderNew);
        }

        ncp(outputTemp, distFolderNew, (err) => {
            if (err) {
                return console.error(err);
            }

            replaceHrefInIndex(program.baseHref);

            rimraf(outputTemp,  ()=> { console.log('output temp removed'); });

        });

    });

}

main();