UNPKG

template-tango

Version:

Tool for merging HTML templates between front and back end, making use of Beyond Compare folder comparison.

119 lines (118 loc) 5.56 kB
"use strict"; var fs = require("fs-extra"); var inquirer = require("inquirer"); var os = require("os"); var chalk = require("chalk"); var slash = require("slash"); var utils_1 = require("./utils"); var NS = "TemplateTango"; var B2F = "backToFront/"; var F2B = "frontToBack/"; var suppressWarnings = false; var Questions = (function () { function Questions(opts, completeCB) { this.opts = opts; this.questions().then(completeCB); } Questions.prototype.questions = function () { var opts = this.opts; var questions = []; if (!opts.skipBCConfirm) { questions.push({ type: 'confirm', name: 'beyondCompare', message: chalk.magenta('Have you got Beyond Compare installed on the command-line? You will need it to run this task. See README.md for setup guide'), default: true }); } questions.push({ when: function (res) { if (opts.skipBCConfirm) { res.beyondCompare = true; return true; } if (!res.beyondCompare) console.warn(chalk.red("Sorry, but you must have Beyond Compare installed on the command-line to run this app. Stopping early.")); return res.beyondCompare; }, type: 'confirm', name: 'backToFront', message: chalk.cyan('\nOk to clone "back to front" into ') + chalk.bgCyan.white('"' + this.opts.cloneDest + B2F + '"') + chalk.cyan("?"), default: true }, { when: function (res) { if (!res.backToFront || !res.beyondCompare) { if (!res.beyondCompare) console.warn(chalk.red("You answered 'No' having Beyond Compare installed on the command-line. Skipping step.")); else if (!res.backToFront) console.warn(chalk.red("You answered 'No' to merging 'back to front'. Skipping step.")); return true; } return utils_1.default.copyBackToFront(opts.cloneDest + B2F, opts.backEnd, opts.frontEnd.extension, opts.frontEnd.subDir, opts.frontEnd.pagesDir, opts.frontEnd.modulesDir, opts.nameMap) .then(function (result) { if (result.errList.length) { console.warn(chalk.red("Some files could not be found. Stopping early."), result.errList); return false; } utils_1.default.launchBC(opts.beyondComparePath, opts.cloneDest + B2F, opts.frontEnd.rootDir); console.log(utils_1.default.getBeyondCompareMessage('Back to front', "magenta", "bgMagenta")); return true; }); }, type: 'confirm', name: 'frontToBack', message: chalk.cyan('Ok to clone "front to back" into ') + chalk.bgCyan.white('"' + this.opts.cloneDest + F2B + '"') + chalk.cyan("?"), default: true }, { when: function (res) { if (!res.frontToBack || !res.beyondCompare) { if (!res.beyondCompare) console.warn(chalk.red("You answered 'No' having Beyond Compare installed on the command-line. Skipping step.")); else if (!res.frontToBack) console.warn(chalk.red("You answered 'No' to merging 'front to back'. Skipping step.")); return true; } return utils_1.default.copyFrontToBack(opts.cloneDest + F2B, opts.frontEnd, opts.backEnd.extension, opts.backEnd.subDir, opts.backEnd.pagesDir, opts.backEnd.modulesDir, opts.nameMap) .then(function (result) { if (result.errList.length) { console.warn(chalk.red("Some files could not be found. Stopping early."), result.errList); return false; } utils_1.default.launchBC(opts.beyondComparePath, opts.cloneDest + F2B, opts.backEnd.rootDir); console.log(utils_1.default.getBeyondCompareMessage('Front to back', "cyan", "bgCyan")); return true; }); }, type: 'confirm', name: 'frontToBack', message: chalk.magenta("When you're done with forwards merge, press enter to run final step."), default: true }); return inquirer.prompt(questions); }; return Questions; }()); function startQuestions(opts, completeCB) { if (!opts.beyondComparePath) opts.beyondComparePath = 'C:/Program Files/Beyond Compare 4/BCompare.exe'; // If cloneDest not provided, uses default OS tmpDir if (!opts.cloneDest) opts.cloneDest = utils_1.default.ensureTrainlingSlash(slash(os.tmpdir())) + "template-tango/"; fs.remove(opts.cloneDest, function (err) { if (err) { console.warn(NS, "startQuestions", "Couldn't clear the 'cloneDest' directory", opts.cloneDest); return; } new Questions(opts, completeCB); }); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { startQuestions: startQuestions, testable: { suppressWarnings: function (val) { suppressWarnings = val; utils_1.default.testable.suppressWarnings(val); } } };