hatchyt
Version:
Hatch your next idea.
105 lines (71 loc) • 3.26 kB
JavaScript
#! /usr/bin/env node
'use strict';
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _multer = require('multer');
var _multer2 = _interopRequireDefault(_multer);
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _site = require('./server/routes/site');
var _site2 = _interopRequireDefault(_site);
var _hatch = require('./server/routes/hatch');
var _hatch2 = _interopRequireDefault(_hatch);
var _requirements = require('./server/requirements');
var _requirements2 = _interopRequireDefault(_requirements);
var _settings = require('./shared/settings');
var _settings2 = _interopRequireDefault(_settings);
var _raven = require('raven');
var _raven2 = _interopRequireDefault(_raven);
var _prompt = require('./server/prompt');
var _prompt2 = _interopRequireDefault(_prompt);
var _package = require('../package.json');
var _package2 = _interopRequireDefault(_package);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// determine if requirements are set up (database, directories)
var ready = (0, _requirements2.default)();
var storage = (0, _multer2.default)();
var app = (0, _express2.default)();
app.use(versionView); // insert version into each view context
app.use(storage.array()); // use multer to handle response body
app.use(_bodyParser2.default.urlencoded({ extended: false })); // use body.urlencode to hande urlecndoed posts
app.set('trust proxy', true); // client’s IP address is understood as the left-most entry in the X-Forwarded-* header
app.set('view engine', 'jade');
app.set('views', _path2.default.join(__dirname, '..', 'views'));
app.use('/site', _site2.default.routes); // internal views
app.use('/', _hatch2.default); // externam views
// Sentry error logging
if (process.env.HATCHYT_ENV != 'dev') {
app.use(_raven2.default.middleware.express.requestHandler(_settings2.default.SENTRY));
app.use(_raven2.default.middleware.express.errorHandler(_settings2.default.SENTRY));
}
// Static directories
app.use(_express2.default.static(_path2.default.join(__dirname, 'public'))); // public javascript and css
app.use(_express2.default.static('output')); // ??
app.use(_express2.default.static(_path2.default.join(__dirname, '..', 'libs'))); // third-party assets
app.use(onError);
if (process.argv.indexOf('--initial') > -1) {
(0, _prompt2.default)();
} else {
!ready ? (0, _prompt2.default)(main) : main(); // Kickoff!
}
function main() {
app.listen(80).on('error', function (e) {
app.listen(_settings2.default.PORT);
console.log('Hatchyt is running on port ' + _settings2.default.PORT + '!');
});
}
// The error id is attached to `res.sentry` to be returned
// and optionally displayed to the user for support.
function onError(err, req, res, next) {
var msg = process.env.HATCHYT_ENV === 'dev' ? err.toString() : res.sentry;
res.statusCode = 500;
res.end("Oops!\n" + msg);
}
// expose version to the views
function versionView(req, res, next) {
res.locals.version = _package2.default.version;
next();
}
//# sourceMappingURL=server.js.map