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]);
}