Files
firebase-tools/bin/firebase
2015-10-12 10:42:25 -07:00

76 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
var updateNotifier = require('update-notifier');
var pkg = require('../package.json');
var client = require('..');
var errorOut = require('../lib/errorOut');
var winston = require('winston');
var logger = require('../lib/logger');
var fs = require('fs');
var path = require('path');
var chalk = require('chalk');
var configstore = require('../lib/configstore');
var _ = require('lodash');
var logFilename = path.join(process.cwd(), '/firebase-debug.log');
logger.add(winston.transports.Console, {
level: process.env.DEBUG ? 'debug' : 'info',
showLevel: false,
colorize: true
}).add(winston.transports.File, {
level: 'debug',
filename: logFilename,
json: false,
formatter: function(input) {
input.message = chalk.stripColor(input.message);
return [
'[' + input.level + ']',
input.message
].join(' ');
}
});
logger.debug(_.repeat('-', 70));
logger.debug('Command: ', process.argv.join(' '));
logger.debug('Platform: ', process.platform);
logger.debug('Node Version:', process.version);
logger.debug('Time: ', new Date().toString());
logger.debug(_.repeat('-', 70));
logger.debug();
process.on('exit', function(code) {
code = process.exitCode || code;
if (code < 2 && fs.existsSync(logFilename)) {
fs.unlinkSync(logFilename);
}
if (code > 0) {
var lastError = configstore.get('lastError');
var timestamp = new Date().getTime();
if (lastError && lastError > timestamp - 120000) {
console.log();
console.log('Having trouble? Don\'t hesitate to contact', chalk.underline.yellow('support@firebase.com'));
}
configstore.set('lastError', timestamp);
}
});
require('exit-code');
process.on('uncaughtException', function(err) {
errorOut(client, err);
});
updateNotifier({pkg: pkg}).notify();
client.cli.parse(process.argv);
// determine if there are any non-option arguments. if not, display help
var args = process.argv.slice(2);
args = args.filter(function(arg) {
return arg.indexOf('-') < 0;
});
if (!args.length) {
client.cli.help();
}