utils.js

'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.runWithMessageAndLimiter = exports.isProductionEnv = exports.isDevelopmentEnv = exports.isEnv = void 0;

var _staticBase = require('static-base');

var _chalk = require('chalk');

var _chalk2 = _interopRequireDefault(_chalk);

var _minimatch = require('minimatch');

var _minimatch2 = _interopRequireDefault(_minimatch);

var _bluebird = require('bluebird');

var _bluebird2 = _interopRequireDefault(_bluebird);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

/**
 * Utility function to check against the current environment name.
 * Example, `isEnv('development') === true`.
 *
 * Also available:
 *
 * ```
 * isDevelopmentEnv();
 * isProductionEnv();
 * ```
 */
var isEnv = exports.isEnv = function isEnv(env) {
  return process.env.ENV === env;
};
var isDevelopmentEnv = exports.isDevelopmentEnv = function isDevelopmentEnv() {
  return isEnv('development');
};
var isProductionEnv = exports.isProductionEnv = function isProductionEnv() {
  return isEnv('production');
};

/**
 * The `static-base.run` function with a limiter and messenger installed.
 * The last function accepts an object instead of the usual stuff.
 * If the limiter (e.g. `changedPath` from watcher)
 * matches the given pattern then it continues,
 * otherwise it returns a Promise with an empty array.
 *
 * __How to use:__
 *
 * ```
 * const message = 'Building pages';
 * const limiter = 'src/pages/example.hbs';
 * const sequenceItems = [read];
 * const pattern = 'src/pages/*.hbs';
 * const rootDir = __dirname;
 *
 * runWithMessageAndLimiter
 *   (message)
 *   (limiter)
 *   (...sequenceItems)
 *   (pattern, rootDir)
 * ```
 */
var runWithMessageAndLimiter = exports.runWithMessageAndLimiter = function runWithMessageAndLimiter(msg) {
  return function (limiter, limiterPattern) {
    return function () {
      for (var _len = arguments.length, sequenceItems = Array(_len), _key = 0; _key < _len; _key++) {
        sequenceItems[_key] = arguments[_key];
      }

      return function () {
        var pattern = limiterPattern || (typeof (arguments.length <= 0 ? void 0 : arguments[0]) === 'string' ? arguments.length <= 0 ? void 0 : arguments[0] : void 0);
        var cleanPattern = pattern && (0, _staticBase.cleanPath)(pattern, { beginning: true });

        if (!limiter || cleanPattern && (0, _minimatch2['default'])(limiter, cleanPattern)) {
          console.log(_chalk2['default'].bold.yellow(msg));
          return _staticBase.run.apply(void 0, sequenceItems).apply(void 0, arguments);
        }

        return _bluebird2['default'].resolve([]);
      };
    };
  };
};