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) => {

    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 = await 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);
        })

    if (done) {
        done()
    }
};