Skip to content

Commit 02e8f7b

Browse files
authored
Merge pull request #97 from bertdeblock/minor-refactors
Minor refactors
2 parents 3785cc7 + 45da765 commit 02e8f7b

13 files changed

Lines changed: 167 additions & 150 deletions

File tree

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ export type Config = {
8585
destroy?: boolean;
8686
// Log the generated component to the console, instead of writing it to disk:
8787
log?: boolean;
88+
// Generate a named export, instead of a default export:
89+
namedExport?: boolean;
8890
// Generate a nested colocated component, e.g. `foo/bar/index.gts`:
8991
nested?: boolean;
9092
// Generate a component at a custom path, e.g. `--path=src/-private`:
@@ -149,6 +151,8 @@ export type Config = {
149151
destroy?: boolean;
150152
// Log the generated helper to the console, instead of writing it to disk:
151153
log?: boolean;
154+
// Generate a named export, instead of a default export:
155+
namedExport?: boolean;
152156
// Generate a helper at a custom path, e.g. `--path=src/-private`:
153157
path?: string;
154158
// Generate a corresponding helper-test:
@@ -181,6 +185,8 @@ export type Config = {
181185
destroy?: boolean;
182186
// Log the generated modifier to the console, instead of writing it to disk:
183187
log?: boolean;
188+
// Generate a named export, instead of a default export:
189+
namedExport?: boolean;
184190
// Generate a modifier at a custom path, e.g. `--path=src/-private`:
185191
path?: string;
186192
// Generate a corresponding modifier-test:
@@ -213,6 +219,8 @@ export type Config = {
213219
log?: boolean;
214220
// Generate a route at a custom path, e.g. `--path=src/-private`:
215221
path?: string;
222+
// Generate a corresponding template:
223+
template?: boolean;
216224
// Generate a corresponding route-test:
217225
test?: boolean;
218226
// Generate a `.ts` route, instead of a `.js` route:
@@ -262,6 +270,22 @@ export type Config = {
262270
// Generate a `.ts` service-test, instead of a `.js` service-test:
263271
typescript?: boolean;
264272
};
273+
template?: {
274+
// Generate a `class-based` template, instead of a `template-only` template:
275+
classBased?: boolean;
276+
// Copy the generated template to the clipboard, instead of writing it to disk:
277+
copy?: boolean;
278+
// The current working directory to run the template generator in:
279+
cwd?: string;
280+
// Destroy a template by name:
281+
destroy?: boolean;
282+
// Log the generated template to the console, instead of writing it to disk:
283+
log?: boolean;
284+
// Generate a template at a custom path, e.g. `--path=src/-private`:
285+
path?: string;
286+
// Generate a `.gts` template, instead of a `.gjs` template:
287+
typescript?: boolean;
288+
};
265289
util?: {
266290
// Copy the generated util to the clipboard, instead of writing it to disk:
267291
copy?: boolean;
@@ -271,6 +295,8 @@ export type Config = {
271295
destroy?: boolean;
272296
// Log the generated util to the console, instead of writing it to disk:
273297
log?: boolean;
298+
// Generate a named export, instead of a default export:
299+
namedExport?: boolean;
274300
// Generate a util at a custom path, e.g. `--path=src/-private`:
275301
path?: string;
276302
// Generate a corresponding util-test:

src/cli.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { GemberError, logGemberErrors } from "./errors.js";
99
import {
1010
generators,
1111
getGenerator,
12-
getTemplateGenerator,
1312
getTestGenerator,
1413
} from "./generators/generators.js";
1514
import { readOwnPackageJsonSync } from "./internal.js";
@@ -123,29 +122,29 @@ function generatorCommands(deprecated?: boolean): SubCommandsDef {
123122
logGemberErrors(async () => {
124123
await generator.run(context.args);
125124

125+
if (context.args.template) {
126+
if (generator.hasArg("template")) {
127+
await getGenerator("template").run(context.args);
128+
} else {
129+
logger.warn(
130+
`You passed the \`--template\` option, but the \`${generator.name}\` generator does not have a corresponding template generator.`,
131+
);
132+
}
133+
}
134+
126135
if (context.args.test) {
127136
if (generator.isTestGenerator) {
128137
logger.warn(
129138
`You passed the \`--test\` option, but the \`${generator.name}\` generator is already a test generator.`,
130139
);
131-
} else if (generator.args.find((arg) => arg.name === "test")) {
140+
} else if (generator.hasArg("test")) {
132141
await getTestGenerator(generator.name).run(context.args);
133142
} else {
134143
logger.warn(
135144
`You passed the \`--test\` option, but the \`${generator.name}\` generator does not have a corresponding test generator.`,
136145
);
137146
}
138147
}
139-
140-
if (context.args.template) {
141-
if (generator.args.find((arg) => arg.name === "template")) {
142-
await getTemplateGenerator().run(context.args);
143-
} else {
144-
logger.warn(
145-
`You passed the \`--template\` option, but the \`${generator.name}\` generator does not support generating a template.`,
146-
);
147-
}
148-
}
149148
});
150149
},
151150
};

src/config.ts

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { GeneratorFile } from "./generators/generator.js";
55
import { logger } from "./logger.js";
66

77
export type Config = {
8+
// Generated using `/dev/generate-generators-type.js`:
89
generators?: {
910
"acceptance-test"?: {
1011
// Copy the generated acceptance-test to the clipboard, instead of writing it to disk:
@@ -31,6 +32,8 @@ export type Config = {
3132
destroy?: boolean;
3233
// Log the generated component to the console, instead of writing it to disk:
3334
log?: boolean;
35+
// Generate a named export, instead of a default export:
36+
namedExport?: boolean;
3437
// Generate a nested colocated component, e.g. `foo/bar/index.gts`:
3538
nested?: boolean;
3639
// Generate a component at a custom path, e.g. `--path=src/-private`:
@@ -95,6 +98,8 @@ export type Config = {
9598
destroy?: boolean;
9699
// Log the generated helper to the console, instead of writing it to disk:
97100
log?: boolean;
101+
// Generate a named export, instead of a default export:
102+
namedExport?: boolean;
98103
// Generate a helper at a custom path, e.g. `--path=src/-private`:
99104
path?: string;
100105
// Generate a corresponding helper-test:
@@ -127,6 +132,8 @@ export type Config = {
127132
destroy?: boolean;
128133
// Log the generated modifier to the console, instead of writing it to disk:
129134
log?: boolean;
135+
// Generate a named export, instead of a default export:
136+
namedExport?: boolean;
130137
// Generate a modifier at a custom path, e.g. `--path=src/-private`:
131138
path?: string;
132139
// Generate a corresponding modifier-test:
@@ -180,22 +187,6 @@ export type Config = {
180187
// Generate a `.ts` route-test, instead of a `.js` route-test:
181188
typescript?: boolean;
182189
};
183-
template?: {
184-
// Generate a `class-based` template, instead of a `template-only` template:
185-
classBased?: boolean;
186-
// Copy the generated template to the clipboard, instead of writing it to disk:
187-
copy?: boolean;
188-
// The current working directory to run the template generator in:
189-
cwd?: string;
190-
// Destroy a template by name:
191-
destroy?: boolean;
192-
// Log the generated template to the console, instead of writing it to disk:
193-
log?: boolean;
194-
// Generate a template at a custom path, e.g. `--path=src/-private`:
195-
path?: string;
196-
// Generate a `.gts` template, instead of a `.gjs` template:
197-
typescript?: boolean;
198-
};
199190
service?: {
200191
// Copy the generated service to the clipboard, instead of writing it to disk:
201192
copy?: boolean;
@@ -226,6 +217,22 @@ export type Config = {
226217
// Generate a `.ts` service-test, instead of a `.js` service-test:
227218
typescript?: boolean;
228219
};
220+
template?: {
221+
// Generate a `class-based` template, instead of a `template-only` template:
222+
classBased?: boolean;
223+
// Copy the generated template to the clipboard, instead of writing it to disk:
224+
copy?: boolean;
225+
// The current working directory to run the template generator in:
226+
cwd?: string;
227+
// Destroy a template by name:
228+
destroy?: boolean;
229+
// Log the generated template to the console, instead of writing it to disk:
230+
log?: boolean;
231+
// Generate a template at a custom path, e.g. `--path=src/-private`:
232+
path?: string;
233+
// Generate a `.gts` template, instead of a `.gjs` template:
234+
typescript?: boolean;
235+
};
229236
util?: {
230237
// Copy the generated util to the clipboard, instead of writing it to disk:
231238
copy?: boolean;
@@ -235,6 +242,8 @@ export type Config = {
235242
destroy?: boolean;
236243
// Log the generated util to the console, instead of writing it to disk:
237244
log?: boolean;
245+
// Generate a named export, instead of a default export:
246+
namedExport?: boolean;
238247
// Generate a util at a custom path, e.g. `--path=src/-private`:
239248
path?: string;
240249
// Generate a corresponding util-test:

src/generators/generator.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
export type Generator = {
2020
args: GeneratorArg[];
2121
description: string;
22+
hasArg: (name: GeneratorArg["name"]) => boolean;
2223
isTestGenerator: boolean;
2324
name: string;
2425
run: (args: Args) => Promise<void>;
@@ -234,6 +235,7 @@ export function defineGenerator({
234235
return {
235236
args: generatorArgs,
236237
description: description ?? `Generate a new ${generatorName}`,
238+
hasArg: (name) => generatorArgs.some((arg) => arg.name === name),
237239
isTestGenerator: isTestGenerator ?? false,
238240
name: generatorName,
239241
run,
@@ -360,7 +362,7 @@ export function path(): GeneratorArgFactory {
360362

361363
export function template(): GeneratorArgFactory {
362364
return () => ({
363-
description: `Generate a corresponding template`,
365+
description: "Generate a corresponding template",
364366
name: "template",
365367
type: "boolean",
366368
});

src/generators/generators.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,6 @@ export const generators: Generator[] = [
100100
classBased({ functionBasedName: "template-only" }),
101101
typescript({ gts: true }),
102102
],
103-
modifyTemplateFile: (templateFile) => {
104-
templateFile.name = "component";
105-
},
106103
name: "template",
107104
}),
108105

@@ -133,7 +130,3 @@ export function getGenerator(generatorName: string): Generator {
133130
export function getTestGenerator(generatorName: string): Generator {
134131
return getGenerator(testGeneratorName(generatorName));
135132
}
136-
137-
export function getTemplateGenerator(): Generator {
138-
return getGenerator("template");
139-
}
File renamed without changes.

templates/template/component.class-based.gts renamed to templates/template/template.class-based.gts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import Component from '@glimmer/component';
22

33
export interface {{name.signature}} {
44
Args: {
5-
model: unknown;
65
controller: unknown;
6+
model: unknown;
77
};
88
Blocks: {
99
default: [];
File renamed without changes.

templates/template/component.template-only.gts renamed to templates/template/template.template-only.gts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import type { TOC } from '@ember/component/template-only';
22

33
export interface {{name.signature}} {
44
Args: {
5-
model: unknown;
65
controller: unknown;
6+
model: unknown;
77
};
88
Blocks: {
99
default: [];

0 commit comments

Comments
 (0)