UNPKG

@happy-coders/fun-cli

Version:

Be your project management more fun!

87 lines (86 loc) 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AddAction = void 0; var tslib_1 = require("tslib"); var chalk_1 = tslib_1.__importDefault(require("chalk")); var fs = tslib_1.__importStar(require("fs")); var project_builder_1 = require("../core/project/builder/project.builder"); var messages_1 = require("../core/ui/messages"); var abstract_action_1 = require("./abstract.action"); var input_handler_1 = require("./input.handler"); var AddAction = /** @class */ (function (_super) { tslib_1.__extends(AddAction, _super); function AddAction(repository) { var _this = _super.call(this) || this; _this.repository = repository; return _this; } AddAction.prototype.mountInputs = function (alias, command) { var inputs = input_handler_1.createInputsFromAlias(alias); inputs.push({ name: 'path', value: command.path }); return inputs; }; AddAction.prototype.handle = function (inputs) { return tslib_1.__awaiter(this, void 0, void 0, function () { var projectAlias, projectPath, project; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: projectAlias = input_handler_1.getProjectAlias(inputs); return [4 /*yield*/, this._ensureProjectDoesNotExists(projectAlias)]; case 1: _a.sent(); projectPath = this._getProjectPath(inputs); return [4 /*yield*/, project_builder_1.buildProject(projectAlias, projectPath)]; case 2: project = _a.sent(); return [4 /*yield*/, this.repository.create(project)]; case 3: _a.sent(); console.log(messages_1.ADD_ACTION_SUCCESS(project)); console.log(messages_1.RUN_COMMAND_HELP(project)); return [2 /*return*/]; } }); }); }; AddAction.prototype._ensureProjectDoesNotExists = function (projectAlias) { return tslib_1.__awaiter(this, void 0, void 0, function () { var project, errorMessage; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.repository.findOne(projectAlias)]; case 1: project = _a.sent(); if (!!project) { errorMessage = messages_1.PROJECT_ALREADY_EXISTS(projectAlias); console.error(errorMessage); console.info(messages_1.PROJECT_DETAILS_HELP(projectAlias)); throw new Error(errorMessage); } return [2 /*return*/]; } }); }); }; AddAction.prototype._getProjectPath = function (inputs) { var pathInput = inputs.find(function (input) { return input.name === 'path'; }); if (!pathInput) { throw new Error('No path found in command input'); } var path = pathInput.value; if (!fs.existsSync(path)) { var errorMessage = "\nPath \"" + path + "\" not exists or is unacessible\n"; console.error(chalk_1.default.red(errorMessage)); throw new Error(errorMessage); } if (!fs.lstatSync(path).isDirectory()) { var errorMessage = '\nPath must be a directory\n'; console.error(chalk_1.default.red(errorMessage)); throw new Error(errorMessage); } return path; }; return AddAction; }(abstract_action_1.AbstractAction)); exports.AddAction = AddAction;