@knapsack/app
Version:
Build Design Systems on top of knapsack, by Basalt
83 lines (70 loc) • 2.38 kB
text/typescript
/**
* Copyright (C) 2018 Basalt
This file is part of Knapsack.
Knapsack is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
Knapsack is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with Knapsack; if not, see <https://www.gnu.org/licenses>.
*/
import log from 'npmlog'; // https://www.npmjs.com/package/npmlog
import util from 'util';
function stringifyDeep(obj: {}, depth = 5): string {
return util.inspect(obj, { showHidden: false, depth });
}
export function error(msg: string, extra?: any, prefix = ''): void {
if (extra) {
log.error(prefix, msg, stringifyDeep(extra));
} else {
log.error(prefix, msg);
}
}
export function info(msg: string, extra?: any, prefix = ''): void {
if (extra) {
log.info(prefix, msg, stringifyDeep(extra));
} else {
log.info(prefix, msg);
}
}
export function warn(msg: string, extra?: any, prefix = ''): void {
if (extra) {
log.warn(prefix, msg, stringifyDeep(extra));
} else {
log.warn(prefix, msg);
}
}
export function verbose(msg: string, extra?: any, prefix = ''): void {
if (extra) {
log.verbose(prefix, msg, stringifyDeep(extra));
} else {
log.verbose(prefix, msg);
}
}
export function silly(msg: string, extra?: any, prefix = ''): void {
if (extra) {
log.silly(prefix, msg, stringifyDeep(extra));
} else {
log.silly(prefix, msg);
}
}
/**
* Log deeply nested object
*/
export function inspect(obj: {}, name = 'inspect', depth = 5): void {
console.log();
console.log(`Start: ${name} ================`);
console.log(stringifyDeep(obj, depth));
console.log(`End: ${name} ----------------`);
console.log();
}
type LogLevelValues = 'error' | 'warn' | 'http' | 'info' | 'verbose' | 'silly';
export function setLogLevel(level: LogLevelValues): void {
// info(`Setting loglevel to ${level}`);
log.level = level;
}
setLogLevel((process.env.KNAPSACK_LOG_LEVEL as LogLevelValues) || 'info');