From cd34930e0406c97629bf882382680bbeb218059c Mon Sep 17 00:00:00 2001 From: Chen Asraf Date: Mon, 6 Dec 2021 00:27:57 +0200 Subject: [PATCH] fix cmd --- package.json | 4 +- src/cmd.ts | 98 ++++++++++++++++++++++++++++++++++++++++++++++++- src/cmd_util.ts | 95 ----------------------------------------------- 3 files changed, 99 insertions(+), 98 deletions(-) delete mode 100644 src/cmd_util.ts diff --git a/package.json b/package.json index 65fa526..d610c6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simple-scaffold", - "version": "1.0.0-alpha.15", + "version": "1.0.0-alpha.16", "description": "Create files based on templates", "repository": "https://github.com/chenasraf/simple-scaffold.git", "author": "Chen Asraf ", @@ -9,7 +9,7 @@ "bin": "cmd.js", "scripts": { "clean": "rm -rf dist/", - "build": "yarn clean && tsc && chmod -R +x ./dist && cp ./package.json ./dist/ && cp ./README.md ./dist/", + "build": "yarn clean && tsc && chmod -R +x ./dist && cp ./package.json ./README.md ./dist/", "dev": "tsc --watch", "start": "node dist/scaffold.js", "test": "jest --verbose", diff --git a/src/cmd.ts b/src/cmd.ts index 13ccce4..4467275 100644 --- a/src/cmd.ts +++ b/src/cmd.ts @@ -1,2 +1,98 @@ -import { parseCliArgs } from "./cmd_util" +#!/usr/bin/env node +import massarg from "massarg" +import chalk from "chalk" +import { LogLevel, ScaffoldCmdConfig } from "./types" +import { Scaffold } from "./scaffold" + +export function parseCliArgs(args = process.argv.slice(2)) { + return ( + massarg() + .main(Scaffold) + .option({ + name: "name", + aliases: ["n"], + description: + "Name to be passed to the generated files. {{name}} and {{Name}} inside contents and file names will be replaced accordingly.", + isDefault: true, + required: true, + }) + .option({ + name: "output", + aliases: ["o"], + description: + "Path to output to. If --create-sub-folder is enabled, the subfolder will be created inside this path.", + required: true, + }) + .option({ + name: "templates", + aliases: ["t"], + array: true, + description: + "Template files to use as input. You may provide multiple files, each of which can be a relative or absolute path, " + + "or a glob pattern for multiple file matching easily.", + required: true, + }) + .option({ + name: "overwrite", + aliases: ["w"], + boolean: true, + defaultValue: false, + description: "Enable to override output files, even if they already exist.", + }) + .option({ + name: "data", + aliases: ["d"], + description: "Add custom data to the templates. By default, only your app name is included.", + parse: (v) => JSON.parse(v), + }) + .option({ + name: "create-sub-folder", + aliases: ["s"], + boolean: true, + defaultValue: false, + description: "Create subfolder with the input name", + }) + .option({ + name: "quiet", + aliases: ["q"], + boolean: true, + defaultValue: false, + description: "Suppress output logs (Same as --verbose 0)", + }) + .option({ + name: "verbose", + aliases: ["v"], + defaultValue: LogLevel.Info, + description: `Determine amount of logs to display. The values are: ${chalk.bold`0 (none) | 1 (debug) | 2 (info) | 3 (warn) | 4 (error)`}. The provided level will display messages of the same level or higher.`, + parse: Number, + }) + .option({ + name: "dry-run", + aliases: ["dr"], + boolean: true, + defaultValue: false, + description: + "Don't emit files. This is good for testing your scaffolds and making sure they " + + "don't fail, without having to write actual file contents or create directories.", + }) + // .example({ + // input: `yarn cmd -t examples/test-input/Component -o examples/test-output -d '{"property":"myProp","value":"10"}'`, + // description: "Usage", + // output: "", + // }) + .help({ + binName: "simple-scaffold", + useGlobalColumns: true, + usageExample: "[options]", + header: "Create structured files based on templates.", + footer: [ + `Copyright © Chen Asraf 2021`, + `NPM: ${chalk.underline`https://npmjs.com/package/simple-scaffold`}`, + `GitHub: ${chalk.underline`https://github.com/chenasraf/simple-scaffold`}`, + ].join("\n"), + }) + .parse(args) + ) +} + parseCliArgs() diff --git a/src/cmd_util.ts b/src/cmd_util.ts deleted file mode 100644 index c8f86cb..0000000 --- a/src/cmd_util.ts +++ /dev/null @@ -1,95 +0,0 @@ -import massarg from "massarg" -import chalk from "chalk" -import { LogLevel, ScaffoldCmdConfig } from "./types" -import { Scaffold } from "./scaffold" - -export function parseCliArgs(args = process.argv.slice(2)) { - return ( - massarg() - .main(Scaffold) - .option({ - name: "name", - aliases: ["n"], - description: - "Name to be passed to the generated files. {{name}} and {{Name}} inside contents and file names will be replaced accordingly.", - isDefault: true, - required: true, - }) - .option({ - name: "output", - aliases: ["o"], - description: - "Path to output to. If --create-sub-folder is enabled, the subfolder will be created inside this path.", - required: true, - }) - .option({ - name: "templates", - aliases: ["t"], - array: true, - description: - "Template files to use as input. You may provide multiple files, each of which can be a relative or absolute path, " + - "or a glob pattern for multiple file matching easily.", - required: true, - }) - .option({ - name: "overwrite", - aliases: ["w"], - boolean: true, - defaultValue: false, - description: "Enable to override output files, even if they already exist.", - }) - .option({ - name: "data", - aliases: ["d"], - description: "Add custom data to the templates. By default, only your app name is included.", - parse: (v) => JSON.parse(v), - }) - .option({ - name: "create-sub-folder", - aliases: ["s"], - boolean: true, - defaultValue: false, - description: "Create subfolder with the input name", - }) - .option({ - name: "quiet", - aliases: ["q"], - boolean: true, - defaultValue: false, - description: "Suppress output logs (Same as --verbose 0)", - }) - .option({ - name: "verbose", - aliases: ["v"], - defaultValue: LogLevel.Info, - description: `Determine amount of logs to display. The values are: ${chalk.bold`0 (none) | 1 (debug) | 2 (info) | 3 (warn) | 4 (error)`}. The provided level will display messages of the same level or higher.`, - parse: Number, - }) - .option({ - name: "dry-run", - aliases: ["dr"], - boolean: true, - defaultValue: false, - description: - "Don't emit files. This is good for testing your scaffolds and making sure they " + - "don't fail, without having to write actual file contents or create directories.", - }) - // .example({ - // input: `yarn cmd -t examples/test-input/Component -o examples/test-output -d '{"property":"myProp","value":"10"}'`, - // description: "Usage", - // output: "", - // }) - .help({ - binName: "simple-scaffold", - useGlobalColumns: true, - usageExample: "[options]", - header: "Create structured files based on templates.", - footer: [ - `Copyright © Chen Asraf 2021`, - `NPM: ${chalk.underline`https://npmjs.com/package/simple-scaffold`}`, - `GitHub: ${chalk.underline`https://github.com/chenasraf/simple-scaffold`}`, - ].join("\n"), - }) - .parse(args) - ) -}