RSS Git Download  Clone
Raw Blame History
const fs = require('fs');
const _ = require('lodash');
const git = require('../../git');
const process = require('process');
const path = require('path');

const utils = require('corifeus-utils')

const replaces = {
    header: {
        prefix: '[//]: #@corifeus-header',
        postfix: '[//]: #@corifeus-header:end',
    },
    footer: {
        prefix: '[//]: #@corifeus-footer',
        postfix: '[//]: #@corifeus-footer:end',
    }
}

module.exports = async (grunt, inConfig, done) => {

    try {
        const config = Object.assign({}, inConfig);

        ['header', 'footer'].forEach((type) => {
            if (config.hasOwnProperty(type) && config[type]) {
                ['prefix', 'postfix'].forEach((fix) => {
                    if (!config.hasOwnProperty(fix)) {
                        config[fix] = replaces[type][fix];
                    }
                })
            } else {
                config[type] = false;
            }
        })

//    console.log(config);

        const files = grunt.file.expand(config.files);
//    console.log(files);
        const gitData = {
            branch: undefined,
            date: undefined,
            commit: undefined,
            repo: undefined
        };

        const result = Promise.all([
            git.branch,
            git.date,
            git.commit,
            git.repo
        ])
        gitData.branch = result[0];
        gitData.date = result[1];
        gitData.commit = result[2];
        gitData.repo = result[3];

        config.replace = _.template(config.replace)({
            git: gitData,
            pkg: require(`${process.cwd()}/package.json`)
        });

        files
            .map((file) => fs.readFileSync(file).toString())
            .forEach((data, index) => {
                data = utils.string.inject(data, config);

                grunt.log.writeln(`Replaced: ${files[index]}, Pre: ${config.prefix.replace('[//]:', '')}, Post: ${config.postfix.replace('[//]:', '')}`);
                fs.writeFileSync(files[index], data);
            })
        done();
    } catch (error) {
        done(error);
    }

};