"use strict";

var config = require("../config");
var logger = require("../logger").logger;

var fs     = require("fs");
var _      = require("../../lodash.custom");
var path   = require("path");

var info = {
    /**
     * Version info
     * @param {Object} pjson
     * @returns {String}
     */
    getVersion: function (pjson) {
        console.log(pjson.version);
        return pjson.version;
    },
    /**
     * Retrieve the config file
     * @returns {*}
     * @private
     * @param filePath
     */
    getConfigFile: function (filePath) {
        return require(path.resolve(filePath));
    },
    /**
     * Generate an example Config file.
     */
    makeConfig: function (cwd, cb) {

        var opts = require(path.join(__dirname, "..", config.configFile));
        var userOpts = {};

        var ignore = ["excludedFileTypes", "injectFileTypes", "snippetOptions"];

        Object.keys(opts).forEach(function (key) {
            if (!_.includes(ignore, key)) {
                userOpts[key] = opts[key];
            }
        });

        var file = fs.readFileSync(path.join(__dirname, config.template), "utf8");
        file = file.replace("//OPTS", JSON.stringify(userOpts, null, 4));

        fs.writeFile(path.resolve(cwd, config.userFile), file, function () {
            logger.info("Config file created {magenta:%s}", config.userFile);
            logger.info(
              "To use it, in the same directory run: " +
              "{cyan:browser-sync start --config bs-config.js}"
            );
            cb();
        });
    }
};

module.exports = info;
