"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _ = require("../lodash.custom");
var cli_options_1 = require("../cli/cli-options");
/**
 * @param {BrowserSync} browserSync
 * @param {String} [name] - instance name
 * @param {Object} pjson
 * @returns {Function}
 */
module.exports = function (browserSync, name, pjson) {
    return function () {
        /**
         * Handle new + old signatures for init.
         */
        var args = require("../args")(_.toArray(arguments));
        /**
         * If the current instance is already running, just return an error
         */
        if (browserSync.active) {
            return args.cb(new Error("Instance: " + name + " is already running!"));
        }
        // Env specific items
        args.config.version = pjson.version;
        args.config.cwd = args.config.cwd || process.cwd();
        var _a = cli_options_1.merge(args.config), opts = _a[0], errors = _a[1];
        if (errors.length) {
            return args.cb(new Error(cli_options_1.printErrors(errors)));
        }
        return browserSync.init(opts, args.cb);
    };
};
//# sourceMappingURL=init.js.map