#!/usr/bin/env node "use strict"; const path = require("path"); const chalk = require("chalk"); const program = require("commander"); const strings = require("@freesewing/i18n").strings; 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", /^(default|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, version }; 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(` 🎉 ${strings[params.language]["cfp.patternCreated"]} ${chalk.bold(dest)} ${strings[params.language]["cfp.runTheseCommands"]}: - ${strings[params.language]["cfp.startRollup"]} 👉 ${chalk.cyan(`cd ${params.shortName} && ${params.manager} start`)} - ${strings[params.language]["cfp.startWebpack"]} 👉 ${chalk.cyan( `cd ${path.join(params.shortName, "example")} && ${params.manager} start` )} ${strings[params.language]["cfp.devDocsAvailableAt"]} ${chalk.bold("https://" + params.language + ".freesewing.dev/")} ${strings[params.language]["cfp.talkToUs"]} ${chalk.bold("https://gitter.im/freesewing/freesewing")} `); return dest; }; module.exports().catch(err => { console.error(err); process.exit(1); });