mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
Add a 'gulp console' method which preloads Mongo, models, and sets up utility methods
This commit is contained in:
52
tasks/gulp-console.js
Normal file
52
tasks/gulp-console.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import 'coffee-script';
|
||||
|
||||
import mongoose from 'mongoose';
|
||||
import autoinc from 'mongoose-id-autoinc';
|
||||
import logging from '../website/src/logging';
|
||||
import nconf from 'nconf';
|
||||
import utils from '../website/src/utils';
|
||||
import repl from 'repl';
|
||||
import gulp from 'gulp';
|
||||
|
||||
// Add additional properties to the repl's context
|
||||
let improveRepl = (context) => {
|
||||
|
||||
// Let "exit" and "quit" terminate the console
|
||||
['exit', 'quit'].forEach((term) => {
|
||||
Object.defineProperty(context, term, { get() { process.exit(); }});
|
||||
});
|
||||
|
||||
// "clear" clears the screen
|
||||
Object.defineProperty(context, 'clear', { get() {
|
||||
process.stdout.write('\u001B[2J\u001B[0;0f');
|
||||
}});
|
||||
|
||||
utils.setupConfig();
|
||||
|
||||
context.Challenge = require('../website/src/models/challenge').model;
|
||||
context.Group = require('../website/src/models/group').model;
|
||||
context.User = require('../website/src/models/user').model;
|
||||
|
||||
var isProd = nconf.get('NODE_ENV') === 'production';
|
||||
var mongooseOptions = !isProd ? {} : {
|
||||
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
|
||||
server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
|
||||
};
|
||||
autoinc.init(
|
||||
mongoose.connect(
|
||||
nconf.get('NODE_DB_URI'),
|
||||
mongooseOptions,
|
||||
function(err) {
|
||||
if (err) throw err;
|
||||
logging.info('Connected with Mongoose');
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
gulp.task('console', (cb) => {
|
||||
improveRepl(repl.start({
|
||||
prompt: 'Habitica > '
|
||||
}).context);
|
||||
});
|
||||
Reference in New Issue
Block a user