Cimpress-MCP/metafig

View on GitHub
lib/providers/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
'use strict';
const { promisify } = require('es6-promisify'),
  fs = require('fs'),
  path = require('path'),
  ls = promisify(fs.readdir);

module.exports.loadProviders = function loadProviders () {
  return ls(path.resolve(__dirname, '.'))
    .then((providers) => {
      return providers.filter(p => p !== path.basename(__filename)).map(p => p.replace('.js', ''));
    });
};

function getProvider (provider) {
  return module.exports.loadProviders()
    .then(providers => {
      if (providers.indexOf(provider) > -1) {
        return require(`./${provider}`);
      } else {
        throw new Error(`Invalid provider: ${provider}`);
      }
    });
}

module.exports.getSettingsFromProvider = function getSettingsFromProvider (provider, config) {
  return getProvider(provider)
    .then(provider => {
      return provider(config);
    });
};