@agatee/cli
Version:
CLI for Agatee App
79 lines (78 loc) • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkMongooseError = exports.addMongoose = void 0;
var fs_1 = require("fs");
var process_1 = require("process");
var generales_1 = require("../../../generales");
var console_1 = require("../../../utils/console");
var envparser_1 = require("../../../utils/envparser");
var file_1 = require("../../../utils/file");
var workers_1 = require("../../../utils/workers");
var addMongoose = function (params) {
(0, exports.checkMongooseError)(params);
var config = {};
var workingDirectory = (0, process_1.cwd)();
var dbConfig = { host: null, port: null, password: null, user: null, database: null, isSrv: null };
if ((0, fs_1.existsSync)(generales_1.dotenvPath)) {
config = (0, envparser_1.parseEnv)((0, fs_1.readFileSync)(generales_1.dotenvPath).toString());
}
if (params.additionalParams['srv']) {
dbConfig.isSrv = true;
dbConfig.uri = params.additionalParams['db-uri'];
}
else {
dbConfig.host = params.additionalParams['db-host'];
dbConfig.port = params.additionalParams['db-port'];
dbConfig.database = params.additionalParams['db'] || params.additionalParams['database'];
dbConfig.password = params.additionalParams['db-pass'] || params.additionalParams['db-password'];
dbConfig.username = params.additionalParams['db-user'] || params.additionalParams['db-username'];
}
console.log('Installing mongoose\n> npm install --save mongoose');
(0, workers_1.runSpawnWorker)("npm", ['install', '--save', 'mongoose', '--prefix', workingDirectory, workingDirectory], {
onExit: function () {
(0, console_1.logSuccess)("[\u2714] mongoose installed");
console.log('Setting up mongoose ...');
if (dbConfig.isSrv) {
config.DB_URI = dbConfig.uri || 'mongodb://localhost:27017/agatee';
}
else {
config.DB_HOST = dbConfig.host || 'localhost';
config.DB_PORT = dbConfig.port || '27017';
config.DB_PASSWORD = dbConfig.password || '';
config.DB_USERNAME = dbConfig.username || '';
config.DATABASE = dbConfig.database || (0, file_1.getAppName)();
}
(0, fs_1.writeFileSync)(generales_1.dotenvPath, (0, envparser_1.objToEnv)(config));
var appIndexContent = (0, fs_1.readFileSync)(generales_1.appIndexPath).toString();
var newIndexContent = [];
var lines = appIndexContent.split('\n');
// Reverse line and find index for last import word
var lastImportIndexReversed = lines.reverse().findIndex(function (line) {
var firstWord = line.trim().split(' ')[0];
return firstWord === 'import';
});
lines[lastImportIndexReversed] += "\nimport mongoose from 'mongoose';";
if (dbConfig.isSrv) {
lines[lastImportIndexReversed] += "\n\n// Mongoose Config \nconst dbUrl = process.env.DB_URI";
}
else {
lines[lastImportIndexReversed] += "\n\n// Mongoose Config \nconst dbUrl = `mongodb://${(process.env.DB_USERNAME && process.env.DB_PASSWORD) ? `${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@`: ''}${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DATABASE}`;";
}
lines[lastImportIndexReversed] += "\nmongoose.Promise = global.Promise;\nmongoose.connect(dbUrl, {useNewUrlParser: true, useUnifiedTopology: true})\n\t.then(() => console.log('Connected to database'))\n\t.catch((err) => console.error(err));";
lines.reverse();
(0, fs_1.writeFileSync)(generales_1.appIndexPath, lines.join('\n'));
(0, console_1.logSuccess)('[✔] Done adding mongoose');
}
});
};
exports.addMongoose = addMongoose;
var checkMongooseError = function (params) {
var config = {};
if ((0, fs_1.existsSync)(generales_1.dotenvPath)) {
config = (0, envparser_1.parseEnv)((0, fs_1.readFileSync)(generales_1.dotenvPath).toString());
}
if (config.DB_HOST || config.DB_URI) {
throw new Error('Mongoose already added');
}
};
exports.checkMongooseError = checkMongooseError;