#!/usr/bin/env node 'use strict' const path = require('path') const chalk = require('chalk') const program = require('commander') const { version } = require('../package') const getDefaultLibraryParams = require('./get-default-library-params') const createLibrary = require('./create-library') const promptLibraryParams = require('./prompt-library-params') module.exports = async () => { const defaults = await getDefaultLibraryParams() program .name('create-freesewing-pattern') .version(version) .usage('[options] [package-name]') .option('-d, --desc ', 'package description') .option('-a, --author ', 'author\'s github handle', defaults.author) .option('-l, --license ', 'package license', defaults.license) .option('-r, --repo ', 'package repo path') .option('-g, --no-git', 'generate without git init') .option('-m, --manager ', 'package manager to use', /^(npm|yarn)$/, defaults.manager) .option('-t, --template ', 'package template to use', /^(light|dark|custom)$/, defaults.template) .option('-p, --template-path ', 'custom package template path') .option('-s, --skip-prompts', 'skip all prompts (must provide package-name via cli)') .parse(process.argv) const opts = { description: program.desc, author: program.author, license: program.license, repo: program.repo, manager: program.manager, template: program.template, templatePath: program.templatePath, skipPrompts: program.skipPrompts, git: program.git } Object.keys(opts).forEach((key) => { if (!opts[key] && defaults[key]) { opts[key] = defaults[key] } }) if (program.args.length === 1) { opts.name = program.args[0] } else if (program.args.length > 1) { console.error('invalid arguments') program.help() process.exit(1) } const params = await promptLibraryParams(opts) const dest = await createLibrary(params) console.log(` Your pattern skeleton has been created at ${dest}. Before you start hacking, run these two commands, each in their own terminal: In one terminal, start the rollup bundler in watch mode: $ ${chalk.cyan(`cd ${params.shortName} && ${params.manager} start`)} And in another terminal, run the dev server: $ ${chalk.cyan(`cd ${path.join(params.shortName, 'example')} && ${params.manager} start`)} `) return dest } module.exports() .catch((err) => { console.error(err) process.exit(1) })