// var express = require('express');
// var path = require('path');
// var favicon = require('serve-favicon');
// var logger = require('morgan');
// var cookieParser = require('cookie-parser');
// var bodyParser = require('body-parser');

// var routes = require('./routes/index');
// var users = require('./routes/users');

// var app = express();

// // view engine setup
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'ejs');

// // uncomment after placing your favicon in /public
// //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// app.use(logger('dev'));
// app.use(bodyParser.json());
// app.use(bodyParser.urlencoded({ extended: false }));
// app.use(cookieParser());
// app.use(express.static(path.join(__dirname, 'public')));

// app.use('/', routes);
// app.use('/users', users);

// // catch 404 and forward to error handler
// app.use(function(req, res, next) {
//   var err = new Error('Not Found');
//   err.status = 404;
//   next(err);
// });

// // error handlers

// // development error handler
// // will print stacktrace
// if (app.get('env') === 'development') {
//   app.use(function(err, req, res, next) {
//     res.status(err.status || 500);
//     res.render('error', {
//       message: err.message,
//       error: err
//     });
//   });
// }

// // production error handler
// // no stacktraces leaked to user
// app.use(function(err, req, res, next) {
//   res.status(err.status || 500);
//   res.render('error', {
//     message: err.message,
//     error: {}
//   });
// });
var path = require('path');
var IoC = require('electrolyte');
var bootable = require('./bootable');
var http = require('http');
var express = require('express');

process.chdir(__dirname);


//依赖注入
IoC.use(IoC.dir(path.join(__dirname, 'boot')));
IoC.use('igloo', require('./igloo'));
// IoC.use('controllers', IoC.dir(path.join(__dirname, 'controllers')));
// IoC.use('services', IoC.dir(path.join(__dirname, 'services')));
// IoC.use('models', IoC.dir(path.join(__dirname, 'models')));
// IoC.use('utils', IoC.dir(path.join(__dirname, 'utils')));
// execute initializers
// IoC.use("settings", IoC.dir(path.join(__dirname, 'igloo', 'boot', 'settings')));


var app = bootable(express());

app.phase(bootable.di.initializers());
app.phase(bootable.di.routes('./routes'));

app.boot(function (err) {

  if (err) {
    console.log(err);
    process.exit(-1);
    return;
  }

});



module.exports = app;