@coat/cli
Version:
TODO: See #3
70 lines (67 loc) • 2.4 kB
JavaScript
;
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;
}