diff --git a/README.md b/README.md index d7506e1..b717ec6 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,11 @@ [![CI](https://github.com/bertdeblock/gember/workflows/CI/badge.svg)](https://github.com/bertdeblock/gember/actions?query=workflow%3ACI) [![NPM Version](https://badge.fury.io/js/%40bertdeblock%2Fgember.svg)](https://badge.fury.io/js/%40bertdeblock%2Fgember) -Generate components, helpers, modifiers and services in v2 addons. +Generate components, helpers, modifiers and services in v1/v2 apps/addons. Uses [scaffdog](https://scaff.dog/) underneath. -> [!NOTE] -> -> - Only supports `.gjs` (default) and `.gts` files for components +> NOTE: Only supports `.gjs` (default) and `.gts` files for components ## Installation @@ -55,8 +53,12 @@ yarn add -D @bertdeblock/gember Generating components ```shell +pnpm gember component --help # for all available options + +# examples: pnpm gember component foo pnpm gember component foo --class-based # or `--class` +pnpm gember component foo --cwd="test-app" pnpm gember component foo --path="src/-private" pnpm gember component foo --typescript # or `--ts` ``` @@ -67,8 +69,12 @@ pnpm gember component foo --typescript # or `--ts` Generating helpers ```shell +pnpm gember helper --help # for all available options + +# examples: pnpm gember helper foo pnpm gember helper foo --class-based # or `--class` +pnpm gember helper foo --cwd="test-app" pnpm gember helper foo --path="src/-private" pnpm gember helper foo --typescript # or `--ts` ``` @@ -79,8 +85,12 @@ pnpm gember helper foo --typescript # or `--ts` Generating modifiers ```shell +pnpm gember modifier --help # for all available options + +# examples: pnpm gember modifier foo pnpm gember modifier foo --class-based # or `--class` +pnpm gember modifier foo --cwd="test-app" pnpm gember modifier foo --path="src/-private" pnpm gember modifier foo --typescript # or `--ts` ``` @@ -91,7 +101,11 @@ pnpm gember modifier foo --typescript # or `--ts` Generating services ```shell +pnpm gember service --help # for all available options + +# examples: pnpm gember service foo +pnpm gember service foo --cwd="test-app" pnpm gember service foo --path="src/-private" pnpm gember service foo --typescript # or `--ts` ``` diff --git a/package.json b/package.json index 03ee297..81d05b5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@bertdeblock/gember", "version": "0.4.0", - "description": "Generate components, helpers, modifiers and services in v2 addons.", + "description": "Generate components, helpers, modifiers and services in v1/v2 apps/addons.", "repository": "https://github.com/bertdeblock/gember", "license": "MIT", "author": "Bert De Block", diff --git a/src/cli.ts b/src/cli.ts index 44196e8..d63ac70 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -25,6 +25,12 @@ yargs(hideBin(process.argv)) description: "Generate a class-based component", type: "boolean", }) + .option("cwd", { + default: "", + description: + "Generate a component in a custom current working directory", + type: "string", + }) .option("path", { default: "", description: "Generate a component at a custom path", @@ -40,6 +46,7 @@ yargs(hideBin(process.argv)) handler(options) { generateComponent(options.name, { classBased: options.classBased, + cwd: options.cwd, path: options.path, typescript: options.typescript, }); @@ -62,6 +69,12 @@ yargs(hideBin(process.argv)) description: "Generate a class-based helper", type: "boolean", }) + .option("cwd", { + default: "", + description: + "Generate a helper in a custom current working directory", + type: "string", + }) .option("path", { default: "", description: "Generate a helper at a custom path", @@ -77,6 +90,7 @@ yargs(hideBin(process.argv)) handler(options) { generateHelper(options.name, { classBased: options.classBased, + cwd: options.cwd, path: options.path, typescript: options.typescript, }); @@ -99,6 +113,12 @@ yargs(hideBin(process.argv)) description: "Generate a class-based modifier", type: "boolean", }) + .option("cwd", { + default: "", + description: + "Generate a modifier in a custom current working directory", + type: "string", + }) .option("path", { default: "", description: "Generate a modifier at a custom path", @@ -114,6 +134,7 @@ yargs(hideBin(process.argv)) handler(options) { generateModifier(options.name, { classBased: options.classBased, + cwd: options.cwd, path: options.path, typescript: options.typescript, }); @@ -130,6 +151,12 @@ yargs(hideBin(process.argv)) description: "The service's name", type: "string", }) + .option("cwd", { + default: "", + description: + "Generate a service in a custom current working directory", + type: "string", + }) .option("path", { default: "", description: "Generate a service at a custom path", @@ -144,11 +171,13 @@ yargs(hideBin(process.argv)) }, handler(options) { generateService(options.name, { + cwd: options.cwd, path: options.path, typescript: options.typescript, }); }, }) .demandCommand() + .epilogue("🫚 More info at https://github.com/bertdeblock/gember#usage") .strict() .parse(); diff --git a/src/generate-document.ts b/src/generate-document.ts index c7e3af5..06cbf68 100644 --- a/src/generate-document.ts +++ b/src/generate-document.ts @@ -83,6 +83,12 @@ const DOCUMENT_DIRECTORY: Record = { service: "services", }; +const SRC_DIRECTORY: Record = { + APP: "app", + V1_ADDON: "addon", + V2_ADDON: "src", +}; + export async function getDocumentPath( documentName: DocumentName, cwd: string, @@ -99,9 +105,9 @@ export async function getDocumentPath( const packageJson = await readJson(join(cwd, "package.json")); const srcDirectory = isAddon(packageJson) ? isV2Addon(packageJson) - ? "src" // v2 addon - : "addon" // v1 addon - : "app"; // v1 app + ? SRC_DIRECTORY.V2_ADDON + : SRC_DIRECTORY.V1_ADDON + : SRC_DIRECTORY.APP; return join(cwd, srcDirectory, DOCUMENT_DIRECTORY[documentName]); }