"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = generateModuleAsync;

function _path() {
  const data = _interopRequireDefault(require("path"));

  _path = function () {
    return data;
  };

  return data;
}

function _fsExtra() {
  const data = _interopRequireDefault(require("fs-extra"));

  _fsExtra = function () {
    return data;
  };

  return data;
}

function _CommandError() {
  const data = _interopRequireDefault(require("../../CommandError"));

  _CommandError = function () {
    return data;
  };

  return data;
}

function _promptQuestionsAsync() {
  const data = _interopRequireDefault(require("./promptQuestionsAsync"));

  _promptQuestionsAsync = function () {
    return data;
  };

  return data;
}

function _configureModule() {
  const data = _interopRequireDefault(require("./configureModule"));

  _configureModule = function () {
    return data;
  };

  return data;
}

function _fetchTemplate() {
  const data = _interopRequireDefault(require("./fetchTemplate"));

  _fetchTemplate = function () {
    return data;
  };

  return data;
}

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

async function generateModuleAsync(newModuleProjectDir, options) {
  const newModulePathFromArgv = newModuleProjectDir && _path().default.resolve(newModuleProjectDir);

  const newModuleName = newModulePathFromArgv && _path().default.basename(newModulePathFromArgv);

  const newModuleParentPath = newModulePathFromArgv ? _path().default.dirname(newModulePathFromArgv) : process.cwd();
  const configuration = await (0, _promptQuestionsAsync().default)(newModuleName);

  const newModulePath = _path().default.resolve(newModuleParentPath, configuration.npmModuleName);

  if (await _fsExtra().default.exists(newModulePath)) {
    throw new (_CommandError().default)('MODULE_ALREADY_EXISTS', `Module '${newModulePath}' already exists!`);
  }

  await (0, _fetchTemplate().default)(newModulePath, options.template);
  await (0, _configureModule().default)(newModulePath, configuration);
}
//# sourceMappingURL=../../__sourcemaps__/commands/generate-module/generateModuleAsync.js.map