"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.run = run;
exports.optionMap = exports.options = exports.description = exports.usage = void 0;

var constants = _interopRequireWildcard(require("../../constants"));

var colors = _interopRequireWildcard(require("../colors"));

var emoji = _interopRequireWildcard(require("../emoji"));

var utils = _interopRequireWildcard(require("../utils"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

const usage = 'init [file]';
exports.usage = usage;
const description = 'Creates Tailwind config file. Default: ' + colors.file(utils.getSimplePath(constants.defaultConfigFile));
exports.description = description;
const options = [{
  usage: '--full',
  description: 'Generate complete configuration file.'
}, {
  usage: '-p',
  description: 'Generate PostCSS config file.'
}];
exports.options = options;
const optionMap = {
  full: ['full'],
  postcss: ['p']
};
/**
 * Runs the command.
 *
 * @param {string[]} cliParams
 * @param {object} cliOptions
 * @return {Promise}
 */

exports.optionMap = optionMap;

function run(cliParams, cliOptions) {
  return new Promise(resolve => {
    utils.header();
    const isModule = utils.isModule();
    const full = cliOptions.full;
    const file = cliParams[0] || (isModule ? constants.cjsConfigFile : constants.defaultConfigFile);
    const simplePath = utils.getSimplePath(file);
    utils.exists(file) && utils.die(colors.file(simplePath), 'already exists.');
    const stubFile = full ? constants.defaultConfigStubFile : constants.simpleConfigStubFile;
    const stubFileContents = utils.readFile(stubFile, 'utf-8').replace('../colors', 'tailwindcss/colors');
    utils.writeFile(file, stubFileContents);
    utils.log();
    utils.log(emoji.yes, 'Created Tailwind config file:', colors.file(simplePath));

    if (cliOptions.postcss) {
      const postCssConfigFile = isModule ? constants.cjsPostCssConfigFile : constants.defaultPostCssConfigFile;
      const path = utils.getSimplePath(postCssConfigFile);
      utils.exists(constants.defaultPostCssConfigFile) && utils.die(colors.file(path), 'already exists.');
      utils.copyFile(constants.defaultPostCssConfigStubFile, postCssConfigFile);
      utils.log(emoji.yes, 'Created PostCSS config file:', colors.file(path));
    }

    utils.footer();
    resolve();
  });
}