12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- "use strict";
- var logger = require("../logger").logger;
- /**
- * $ browser-sync recipe <name> <options>
- *
- * This command will copy a recipe into either the current directory
- * or one given with the --output flag
- *
- * @param opts
- * @returns {Function}
- */
- module.exports = function (opts) {
- var path = require("path");
- var fs = require("fs-extra");
- var input = opts.cli.input.slice(1);
- var resolved = require.resolve("bs-recipes");
- var dir = path.dirname(resolved);
- var logRecipes = function () {
- var dirs = fs.readdirSync(path.join(dir, "recipes"));
- logger.info("Install one of the following with {cyan:browser-sync recipe <name>\n");
- dirs.forEach(function (name) {
- console.log(" " + name);
- });
- };
- if (!input.length) {
- logger.info("No recipe name provided!");
- logRecipes();
- return opts.cb();
- }
- if (opts.cli.input[1] === "ls") {
- logRecipes();
- return opts.cb();
- }
- input = input[0];
- var flags = opts.cli.flags;
- var output = flags.output
- ? path.resolve(flags.output)
- : path.join(process.cwd(), input);
- var targetDir = path.join(dir, "recipes", input);
- if (fs.existsSync(output)) {
- return opts.cb(new Error("Target folder exists remove it first and then try again"));
- }
- if (fs.existsSync(targetDir)) {
- fs.copy(targetDir, output, function (err) {
- if (err) {
- opts.cb(err);
- }
- else {
- logger.info("Recipe copied into {cyan:%s}", output);
- logger.info("Next, inside that folder, run {cyan:npm i && npm start}");
- opts.cb(null);
- }
- });
- }
- else {
- logger.info("Recipe {cyan:%s} not found. The following are available though", input);
- logRecipes();
- opts.cb();
- }
- };
- //# sourceMappingURL=command.recipe.js.map
|