# src/lib/commands/init/options.js

    import commandLineArgs from 'command-line-args';

    import {
      validateSeedersFolderName,
      validateSeederTemplatePath,
    } from '../../utils/helpers';
    import { promptSeedersFolder, promptSeederTemplate } from './prompts';
    import optionDefinitions from './option-definitions';

    /**
     * Get init options from argv
     * @param    {string[]} argv              cli argv
     * @return   {Object}                     init options
     * @property {string}   seedersFolder
     * @property {string}   customSeederTemplate
     * @property {boolean}  helpWanted
     */
    export const getOptions = argv => {
      const {
        seedersFolder,
        seederTemplate: customSeederTemplate,
        help: helpWanted,
      } = commandLineArgs(optionDefinitions, { argv });

      return { seedersFolder, customSeederTemplate, helpWanted };
    };

    /**
     * Prompt missing options for init command
     * @param  {Object}  [options={}]                 Init command options
     * @param  {[type]}  options.seedersFolder        seeders folder
     * @param  {[type]}  options.customSeederTemplate custom seeder template
     * @return {Promise} Options without missing
     */
    export const promptMissingOptions = async ({
      seedersFolder,
      customSeederTemplate,
    } = {}) => {
      const getSeedersFolder = async () =>
        validateSeedersFolderName(seedersFolder)
          ? seedersFolder
          : promptSeedersFolder();

      const getCustomSeederTemplate = async () =>
        validateSeederTemplatePath(customSeederTemplate)
          ? customSeederTemplate
          : promptSeederTemplate();

      return {
        seedersFolder: await getSeedersFolder(),
        customSeederTemplate: await getCustomSeederTemplate(),
      };
    };