@happy-coders/fun-cli
Version:
Be your project management more fun!
87 lines (86 loc) • 3.9 kB
JavaScript
;
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;