From e9b9589c1b8faad9585636857f2d4c05370530b0 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:55:41 -0400 Subject: [PATCH] refactor(@schematics/angular): use `generateFromFiles` helper in more cases The class, directive, interface, and service schematics now more fully use the `generateFromFiles` helper. This reduces repeat code within each schematic. In some cases the schematic has been reduced to a single call to the helper. --- ...e => __name@dasherize__.__type__.spec.ts.template} | 0 ...mplate => __name@dasherize__.__type__.ts.template} | 0 packages/schematics/angular/class/index.ts | 2 -- packages/schematics/angular/directive/index.ts | 3 --- ...mplate => __name@dasherize__.__type__.ts.template} | 0 packages/schematics/angular/interface/index.ts | 2 -- ...me@dasherize__.__type@dasherize__.spec.ts.template | 0 .../__name@dasherize__.__type@dasherize__.ts.template | 0 packages/schematics/angular/service/index.ts | 11 +---------- .../angular/utility/add-declaration-to-ng-module.ts | 6 +++--- .../schematics/angular/utility/generate-from-files.ts | 3 +++ 11 files changed, 7 insertions(+), 20 deletions(-) rename packages/schematics/angular/class/files/{__name@dasherize____type__.spec.ts.template => __name@dasherize__.__type__.spec.ts.template} (100%) rename packages/schematics/angular/class/files/{__name@dasherize____type__.ts.template => __name@dasherize__.__type__.ts.template} (100%) rename packages/schematics/angular/interface/files/{__name@dasherize____type__.ts.template => __name@dasherize__.__type__.ts.template} (100%) rename packages/schematics/angular/service/files/{__name@dasherize@if-flat__ => }/__name@dasherize__.__type@dasherize__.spec.ts.template (100%) rename packages/schematics/angular/service/files/{__name@dasherize@if-flat__ => }/__name@dasherize__.__type@dasherize__.ts.template (100%) diff --git a/packages/schematics/angular/class/files/__name@dasherize____type__.spec.ts.template b/packages/schematics/angular/class/files/__name@dasherize__.__type__.spec.ts.template similarity index 100% rename from packages/schematics/angular/class/files/__name@dasherize____type__.spec.ts.template rename to packages/schematics/angular/class/files/__name@dasherize__.__type__.spec.ts.template diff --git a/packages/schematics/angular/class/files/__name@dasherize____type__.ts.template b/packages/schematics/angular/class/files/__name@dasherize__.__type__.ts.template similarity index 100% rename from packages/schematics/angular/class/files/__name@dasherize____type__.ts.template rename to packages/schematics/angular/class/files/__name@dasherize__.__type__.ts.template diff --git a/packages/schematics/angular/class/index.ts b/packages/schematics/angular/class/index.ts index d7d6953aabbd..865ec67ccf96 100644 --- a/packages/schematics/angular/class/index.ts +++ b/packages/schematics/angular/class/index.ts @@ -11,7 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as ClassOptions } from './schema'; export default function (options: ClassOptions): Rule { - options.type = options.type ? `.${options.type}` : ''; - return generateFromFiles(options); } diff --git a/packages/schematics/angular/directive/index.ts b/packages/schematics/angular/directive/index.ts index 0ef5e0c9ff8e..089ff94acf92 100644 --- a/packages/schematics/angular/directive/index.ts +++ b/packages/schematics/angular/directive/index.ts @@ -40,9 +40,6 @@ export default function (options: DirectiveOptions): Rule { options.module = findModuleFromOptions(host, options); - // Schematic templates require a defined type value - options.type ??= ''; - const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; diff --git a/packages/schematics/angular/interface/files/__name@dasherize____type__.ts.template b/packages/schematics/angular/interface/files/__name@dasherize__.__type__.ts.template similarity index 100% rename from packages/schematics/angular/interface/files/__name@dasherize____type__.ts.template rename to packages/schematics/angular/interface/files/__name@dasherize__.__type__.ts.template diff --git a/packages/schematics/angular/interface/index.ts b/packages/schematics/angular/interface/index.ts index 775a1017eb63..b04a5343fa39 100644 --- a/packages/schematics/angular/interface/index.ts +++ b/packages/schematics/angular/interface/index.ts @@ -11,7 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as InterfaceOptions } from './schema'; export default function (options: InterfaceOptions): Rule { - options.type = options.type ? `.${options.type}` : ''; - return generateFromFiles(options); } diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.spec.ts.template similarity index 100% rename from packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template rename to packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.spec.ts.template diff --git a/packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template similarity index 100% rename from packages/schematics/angular/service/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template rename to packages/schematics/angular/service/files/__name@dasherize__.__type@dasherize__.ts.template diff --git a/packages/schematics/angular/service/index.ts b/packages/schematics/angular/service/index.ts index f832af457822..640661a2addc 100644 --- a/packages/schematics/angular/service/index.ts +++ b/packages/schematics/angular/service/index.ts @@ -11,14 +11,5 @@ import { generateFromFiles } from '../utility/generate-from-files'; import { Schema as ServiceOptions } from './schema'; export default function (options: ServiceOptions): Rule { - // This schematic uses an older method to implement the flat option - const flat = options.flat; - options.flat = true; - - // Schematic templates require a defined type value - options.type ??= ''; - - return generateFromFiles(options, { - 'if-flat': (s: string) => (flat ? '' : s), - }); + return generateFromFiles(options); } diff --git a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts index 10abc76c58a1..a6238f65dec1 100644 --- a/packages/schematics/angular/utility/add-declaration-to-ng-module.ts +++ b/packages/schematics/angular/utility/add-declaration-to-ng-module.ts @@ -37,11 +37,11 @@ export function addDeclarationToNgModule(options: DeclarationToNgModuleOptions): `/${options.path}/` + (options.flat ? '' : strings.dasherize(options.name) + '/') + strings.dasherize(options.name) + - (options.type ? '.' : '') + - strings.dasherize(options.type); + (options.type ? '.' + strings.dasherize(options.type) : ''); const importPath = buildRelativePath(modulePath, filePath); - const classifiedName = strings.classify(options.name) + strings.classify(options.type); + const classifiedName = + strings.classify(options.name) + (options.type ? strings.classify(options.type) : ''); const changes = addDeclarationToModule(source, modulePath, classifiedName, importPath); if (options.export) { diff --git a/packages/schematics/angular/utility/generate-from-files.ts b/packages/schematics/angular/utility/generate-from-files.ts index ac79813b7111..3f3547d5e6e2 100644 --- a/packages/schematics/angular/utility/generate-from-files.ts +++ b/packages/schematics/angular/utility/generate-from-files.ts @@ -45,6 +45,9 @@ export function generateFromFiles( options.prefix ??= ''; options.flat ??= true; + // Schematic templates require a defined type value + options.type ??= ''; + const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path;