extra_api.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. var fancyLog = require('fancy-log');
  2. var colors = require('ansi-colors');
  3. var notifier = require("node-notifier");
  4. var report = require("./report");
  5. "use strict";
  6. // Default log level
  7. var logLevel = 2;
  8. // Default logger
  9. var fnLog = fancyLog;
  10. var logError = module.exports.logError = function (options, isError) {
  11. if (!logLevel) return;
  12. if (logLevel === 1 && !isError) return;
  13. color = isError ? "red" : "green";
  14. if (!colors[color]) return;
  15. fnLog(colors.cyan('gulp-notify') + ':',
  16. '[' + colors.blue(options.title) + ']',
  17. colors[color].call(colors, options.message)
  18. );
  19. };
  20. // Expose onError behaviour
  21. module.exports.onError = function (options, callback) {
  22. var reporter;
  23. options = options || {};
  24. var templateOptions = options.templateOptions || {};
  25. var callback = callback || function (err) {
  26. err && logError({
  27. title: "Error running notifier",
  28. message: "Could not send message: " + err.message
  29. }, true);
  30. };
  31. if (options.notifier) {
  32. reporter = options.notifier;
  33. } else {
  34. if (options.host || options.appName || options.port) {
  35. notifier = new notifier.Notification({
  36. host: options.host || 'localhost',
  37. appName: options.appName || 'gulp-notify',
  38. port: options.port || '23053'
  39. });
  40. }
  41. reporter = notifier.notify.bind(notifier);
  42. }
  43. return function (error) {
  44. var self = this;
  45. report(reporter, error, options, templateOptions, function () {
  46. callback.apply(self, arguments);
  47. self.emit && self.emit('end');
  48. });
  49. };
  50. };
  51. // Expose to set log level
  52. module.exports.logLevel = function (newLogLevel) {
  53. if (newLogLevel === void 0) return logLevel;
  54. logLevel = newLogLevel;
  55. };
  56. // Expose to set new logger
  57. module.exports.logger = function (newLogger) {
  58. if (!newLogger) return fnLog;
  59. fnLog = newLogger;
  60. };