parent
b87e6e8044
commit
cf446ac53c
|
@ -94,7 +94,6 @@
|
||||||
"inquirer": "2.0.0",
|
"inquirer": "2.0.0",
|
||||||
"js-yaml": "3.7.0",
|
"js-yaml": "3.7.0",
|
||||||
"livescript": "1.5.0",
|
"livescript": "1.5.0",
|
||||||
"log-cool": "1.1.0",
|
|
||||||
"mime-types": "2.1.13",
|
"mime-types": "2.1.13",
|
||||||
"mongodb": "2.2.16",
|
"mongodb": "2.2.16",
|
||||||
"ms": "0.7.2",
|
"ms": "0.7.2",
|
||||||
|
|
24
src/index.ts
24
src/index.ts
|
@ -11,7 +11,7 @@ import * as fs from 'fs';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as cluster from 'cluster';
|
import * as cluster from 'cluster';
|
||||||
const prominence = require('prominence');
|
const prominence = require('prominence');
|
||||||
import { logInfo, logDone, logWarn, logFailed } from 'log-cool';
|
import { log } from './utils/logger';
|
||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
const git = require('git-last-commit');
|
const git = require('git-last-commit');
|
||||||
const portUsed = require('tcp-port-used');
|
const portUsed = require('tcp-port-used');
|
||||||
|
@ -151,41 +151,41 @@ async function init(): Promise<State> {
|
||||||
console.log('\nInitializing...\n');
|
console.log('\nInitializing...\n');
|
||||||
|
|
||||||
if (IS_DEBUG) {
|
if (IS_DEBUG) {
|
||||||
logWarn('It is not in the Production mode. Do not use in the Production environment.');
|
log('Warn', 'It is not in the Production mode. Do not use in the Production environment.');
|
||||||
}
|
}
|
||||||
|
|
||||||
logInfo(`environment: ${env}`);
|
log('Info', `environment: ${env}`);
|
||||||
|
|
||||||
// Get machine info
|
// Get machine info
|
||||||
const totalmem = (os.totalmem() / 1024 / 1024 / 1024).toFixed(1);
|
const totalmem = (os.totalmem() / 1024 / 1024 / 1024).toFixed(1);
|
||||||
const freemem = (os.freemem() / 1024 / 1024 / 1024).toFixed(1);
|
const freemem = (os.freemem() / 1024 / 1024 / 1024).toFixed(1);
|
||||||
logInfo(`MACHINE: ${os.hostname()}`);
|
log('Info', `MACHINE: ${os.hostname()}`);
|
||||||
logInfo(`MACHINE: CPU: ${os.cpus().length}core`);
|
log('Info', `MACHINE: CPU: ${os.cpus().length}core`);
|
||||||
logInfo(`MACHINE: MEM: ${totalmem}GB (available: ${freemem}GB)`);
|
log('Info', `MACHINE: MEM: ${totalmem}GB (available: ${freemem}GB)`);
|
||||||
|
|
||||||
if (!fs.existsSync(`${__dirname}/../.config/config.yml`)) {
|
if (!fs.existsSync(`${__dirname}/../.config/config.yml`)) {
|
||||||
logFailed('Configuration not found');
|
log('Error', 'Configuration not found');
|
||||||
return State.failed;
|
return State.failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
logDone('Success to load configuration');
|
log('Info', 'Success to load configuration');
|
||||||
logInfo(`maintainer: ${config.maintainer}`);
|
log('Info', `maintainer: ${config.maintainer}`);
|
||||||
|
|
||||||
checkDependencies();
|
checkDependencies();
|
||||||
|
|
||||||
// Check if a port is being used
|
// Check if a port is being used
|
||||||
if (await portUsed.check(config.port)) {
|
if (await portUsed.check(config.port)) {
|
||||||
logFailed(`Port: ${config.port} is already used!`);
|
log('Error', `Port: ${config.port} is already used!`);
|
||||||
return State.failed;
|
return State.failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to connect to MongoDB
|
// Try to connect to MongoDB
|
||||||
try {
|
try {
|
||||||
const db = await initdb(config);
|
const db = await initdb(config);
|
||||||
logDone('Success to connect to MongoDB');
|
log('Info', 'Success to connect to MongoDB');
|
||||||
db.close();
|
db.close();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logFailed(`MongoDB: ${e}`);
|
log('Error', `MongoDB: ${e}`);
|
||||||
return State.failed;
|
return State.failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import {logInfo, logDone, logWarn} from 'log-cool';
|
import { log } from './logger';
|
||||||
import {exec} from 'shelljs';
|
import {exec} from 'shelljs';
|
||||||
|
|
||||||
export default function(): void {
|
export default function(): void {
|
||||||
|
@ -6,7 +6,7 @@ export default function(): void {
|
||||||
checkDependency('npm', 'npm -v', x => x.match(/^(.*)\r?\n$/)[1]);
|
checkDependency('npm', 'npm -v', x => x.match(/^(.*)\r?\n$/)[1]);
|
||||||
checkDependency('MongoDB', 'mongo --version', x => x.match(/^MongoDB shell version: (.*)\r?\n$/)[1]);
|
checkDependency('MongoDB', 'mongo --version', x => x.match(/^MongoDB shell version: (.*)\r?\n$/)[1]);
|
||||||
checkDependency('Redis', 'redis-server --version', x => x.match(/v=([0-9\.]*)/)[1]);
|
checkDependency('Redis', 'redis-server --version', x => x.match(/v=([0-9\.]*)/)[1]);
|
||||||
logDone('Successfully checked external dependencies');
|
log('Info', 'Successfully checked external dependencies');
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkDependency(serviceName: string, command: string, transform: (x: string) => string): void {
|
function checkDependency(serviceName: string, command: string, transform: (x: string) => string): void {
|
||||||
|
@ -16,8 +16,8 @@ function checkDependency(serviceName: string, command: string, transform: (x: st
|
||||||
};
|
};
|
||||||
const x = exec(command, { silent: true }) as any;
|
const x = exec(command, { silent: true }) as any;
|
||||||
if (x.code === code.success) {
|
if (x.code === code.success) {
|
||||||
logInfo(`DEPS: ${serviceName} ${transform(x.stdout)}`);
|
log('Info', `DEPS: ${serviceName} ${transform(x.stdout)}`);
|
||||||
} else if (x.code === code.notFound) {
|
} else if (x.code === code.notFound) {
|
||||||
logWarn(`Unable to find ${serviceName}`);
|
log('Warn', `Unable to find ${serviceName}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
import * as chalk from 'chalk';
|
||||||
|
|
||||||
|
export type LogLevel = 'Error' | 'Warn' | 'Info';
|
||||||
|
|
||||||
|
function toLevelColor(level: LogLevel): chalk.ChalkStyle {
|
||||||
|
switch (level) {
|
||||||
|
case 'Error': return chalk.red;
|
||||||
|
case 'Warn': return chalk.yellow;
|
||||||
|
case 'Info': return chalk.blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function log(level: LogLevel, message: string): void {
|
||||||
|
let color = toLevelColor(level);
|
||||||
|
console.log(`[${color.bold(level.toUpperCase())}] ${message}`);
|
||||||
|
}
|
Loading…
Reference in New Issue