logger.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 'use strict';
  2. var R = require('ramda');
  3. var chalk = require('chalk');
  4. var logs = [];
  5. var logLevel = function logLevel() {
  6. return process.env.npm_config_loglevel || 'notice';
  7. };
  8. var error = function error() {
  9. for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {
  10. messages[_key] = arguments[_key];
  11. }
  12. logs.push(messages.join(' '));
  13. console.log(chalk.red.apply(chalk, messages)); // eslint-disable-line no-console
  14. };
  15. var warn = function warn() {
  16. for (var _len2 = arguments.length, messages = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  17. messages[_key2] = arguments[_key2];
  18. }
  19. if (logLevel() === 'silent') return;
  20. logs.push(messages.join(' '));
  21. console.log(chalk.yellow.apply(chalk, messages)); // eslint-disable-line no-console
  22. };
  23. var log = function log() {
  24. var _console;
  25. for (var _len3 = arguments.length, messages = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
  26. messages[_key3] = arguments[_key3];
  27. }
  28. if (logLevel() === 'silent' || logLevel() === 'warn') return;
  29. logs.push(messages.join(' '));
  30. (_console = console).log.apply(_console, messages); // eslint-disable-line no-console
  31. };
  32. // splits long text into lines and calls log()
  33. // on each one to allow easy unit testing for specific message
  34. var logLines = function logLines(text) {
  35. var lines = text.split('\n');
  36. R.forEach(log, lines);
  37. };
  38. var print = function print() {
  39. return logs.join('\n');
  40. };
  41. var reset = function reset() {
  42. logs = [];
  43. };
  44. module.exports = {
  45. log: log,
  46. warn: warn,
  47. error: error,
  48. logLines: logLines,
  49. print: print,
  50. reset: reset,
  51. logLevel: logLevel
  52. };