UNPKG

@coat/cli

Version:

TODO: See #3

70 lines (67 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Tense = void 0; exports.createFileOperationLogMessage = createFileOperationLogMessage; var _chalk = _interopRequireDefault(require("chalk")); var _getFileOperations = require("./get-file-operations"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let Tense; exports.Tense = Tense; (function (Tense) { Tense[Tense["Past"] = 0] = "Past"; Tense[Tense["Future"] = 1] = "Future"; })(Tense || (exports.Tense = Tense = {})); const operationVerbs = { delete: { [Tense.Past]: " DELETED ", [Tense.Future]: " DELETE " }, place: { [Tense.Past]: " CREATED ", [Tense.Future]: " CREATE " }, update: { [Tense.Past]: " UPDATED ", [Tense.Future]: " UPDATE " } }; /** * Creates a log message for file operations of a sync run. * * @param fileOperation The file operation that should be logged * @param tense The tense to use, e.g. create or created */ function createFileOperationLogMessage(fileOperation, tense) { let logPrefix; switch (fileOperation.type) { case _getFileOperations.FileOperationType.Delete: case _getFileOperations.FileOperationType.DeleteSkipped: logPrefix = _chalk.default.inverse.red.bold(operationVerbs.delete[tense]); break; case _getFileOperations.FileOperationType.Place: logPrefix = _chalk.default.inverse.green.bold(operationVerbs.place[tense]); break; case _getFileOperations.FileOperationType.Update: case _getFileOperations.FileOperationType.UpdateWithPrompt: logPrefix = _chalk.default.inverse.blueBright.bold(operationVerbs.update[tense]); break; // The default case is only required to let TypeScript throw // compiler errors if a new FileOperationType is added /* istanbul ignore next */ default: { const unhandledFileOperation = fileOperation; throw new Error(`Unhandled type for file operation: ${unhandledFileOperation}`); } } const skipped = fileOperation.type === _getFileOperations.FileOperationType.DeleteSkipped; // prettier-ignore const fileMessage = `${skipped ? "(skipped - " : ""}${fileOperation.relativePath}${skipped ? ")" : ""}`; let fullMessage = ` ${logPrefix} ${fileMessage}`; if (skipped) { fullMessage = _chalk.default.dim(fullMessage); } return fullMessage; }