Skip to content

Commit 2281bbf

Browse files
authored
Merge pull request #38 from bertdeblock/support-all-cli-options-in-the-gember-config-file
Support all CLI options in the gember config file
2 parents 17c745b + 879f672 commit 2281bbf

25 files changed

+587
-283
lines changed

README.md

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
[![CI](https://github.com/bertdeblock/gember/workflows/CI/badge.svg)](https://github.com/bertdeblock/gember/actions?query=workflow%3ACI)
44
[![NPM Version](https://badge.fury.io/js/%40bertdeblock%2Fgember.svg)](https://badge.fury.io/js/%40bertdeblock%2Fgember)
55

6-
Generate components, helpers, modifiers and services in v2 addons.
6+
Generate components, helpers, modifiers and services in v1/v2 apps/addons.
77

88
Uses [scaffdog](https://scaff.dog/) underneath.
99

10-
> [!NOTE]
11-
>
12-
> - Only supports `.gjs` (default) and `.gts` files for components
10+
> NOTE: Only supports `.gjs` (default) and `.gts` files for components.
1311
1412
## Installation
1513

@@ -55,6 +53,9 @@ yarn add -D @bertdeblock/gember
5553
<summary>Generating components</summary>
5654

5755
```shell
56+
pnpm gember component --help # for all available options
57+
58+
# examples:
5859
pnpm gember component foo
5960
pnpm gember component foo --class-based # or `--class`
6061
pnpm gember component foo --path="src/-private"
@@ -67,6 +68,9 @@ pnpm gember component foo --typescript # or `--ts`
6768
<summary>Generating helpers</summary>
6869

6970
```shell
71+
pnpm gember helper --help # for all available options
72+
73+
# examples:
7074
pnpm gember helper foo
7175
pnpm gember helper foo --class-based # or `--class`
7276
pnpm gember helper foo --path="src/-private"
@@ -79,6 +83,9 @@ pnpm gember helper foo --typescript # or `--ts`
7983
<summary>Generating modifiers</summary>
8084

8185
```shell
86+
pnpm gember modifier --help # for all available options
87+
88+
# examples:
8289
pnpm gember modifier foo
8390
pnpm gember modifier foo --class-based # or `--class`
8491
pnpm gember modifier foo --path="src/-private"
@@ -91,6 +98,9 @@ pnpm gember modifier foo --typescript # or `--ts`
9198
<summary>Generating services</summary>
9299

93100
```shell
101+
pnpm gember service --help # for all available options
102+
103+
# examples:
94104
pnpm gember service foo
95105
pnpm gember service foo --path="src/-private"
96106
pnpm gember service foo --typescript # or `--ts`
@@ -106,28 +116,56 @@ gember supports the following config files:
106116
- `gember.config.cjs`
107117
- `gember.config.mjs`
108118

109-
A gember config file must export a gember config object, or a sync/async function that returns a gember config object.
119+
A gember config file must export a gember config object, or a sync/async function that returns a gember config object:
110120

111-
### Configuration Options
121+
```js
122+
// gember.config.js
112123

113-
#### `hooks.postGenerate`
124+
export default {};
114125

115-
A hook that will be executed post generating a document.
126+
// or:
127+
export default () => ({});
116128

117-
```js
118-
// gember.config.js
129+
// or:
130+
export default async () => ({});
131+
```
119132

120-
import { execa } from "execa";
121-
122-
export default {
123-
hooks: {
124-
postGenerate: async ({ files }) => {
125-
await execa("npx", [
126-
"prettier",
127-
"--write",
128-
...files.map((file) => file.path),
129-
]);
130-
},
131-
},
133+
### Configuration Signature
134+
135+
```ts
136+
export type Config = {
137+
generators?: {
138+
component?: {
139+
classBased?: boolean;
140+
path?: string;
141+
typescript?: boolean;
142+
};
143+
helper?: {
144+
classBased?: boolean;
145+
path?: string;
146+
typescript?: boolean;
147+
};
148+
modifier?: {
149+
classBased?: boolean;
150+
path?: string;
151+
typescript?: boolean;
152+
};
153+
service?: {
154+
path?: string;
155+
typescript?: boolean;
156+
};
157+
};
158+
159+
hooks?: {
160+
// A hook that will be executed post running a generator:
161+
postGenerate?: (info: {
162+
documentName: DocumentName;
163+
entityName: string;
164+
files: File[];
165+
}) => Promise<void> | void;
166+
};
167+
168+
// Use TypeScript by default for all generators:
169+
typescript?: boolean;
132170
};
133171
```

bin/gember.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
#!/usr/bin/env node
22

3-
// eslint-disable-next-line n/no-missing-import
43
import "../dist/cli.js";

eslint.config.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,11 @@ export default typescriptEslint.config(
66
eslint.configs.recommended,
77
typescriptEslint.configs.recommended,
88
eslintPluginNode.configs["flat/recommended-module"],
9-
{ ignores: ["coverage", "dist", "test/output"] },
9+
{ ignores: ["bin", "coverage", "dist", "test/output"] },
10+
{
11+
files: ["**/*.ts"],
12+
rules: {
13+
"@typescript-eslint/explicit-function-return-type": "error",
14+
},
15+
},
1016
);

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@bertdeblock/gember",
33
"version": "0.4.0",
4-
"description": "Generate components, helpers, modifiers and services in v2 addons.",
4+
"description": "Generate components, helpers, modifiers and services in v1/v2 apps/addons.",
55
"repository": "https://github.com/bertdeblock/gember",
66
"license": "MIT",
77
"author": "Bert De Block",
@@ -26,11 +26,11 @@
2626
"prepack": "tsc --project tsconfig.json",
2727
"start": "pnpm build --watch",
2828
"test": "vitest",
29-
"test:coverage": "vitest run --coverage"
29+
"test:coverage": "pnpm build && vitest run --coverage"
3030
},
3131
"dependencies": {
32-
"chalk": "^5.3.0",
3332
"change-case": "^5.4.4",
33+
"consola": "^3.2.3",
3434
"find-up": "^7.0.0",
3535
"fs-extra": "^11.2.0",
3636
"scaffdog": "^4.1.0",
@@ -45,6 +45,7 @@
4545
"concurrently": "^9.1.0",
4646
"eslint": "^9.15.0",
4747
"eslint-plugin-n": "^17.13.2",
48+
"execa": "^9.5.1",
4849
"fixturify-project": "^7.1.3",
4950
"prettier": "^3.3.3",
5051
"recursive-copy": "^2.0.14",

0 commit comments

Comments
 (0)