diff --git a/tools/typeorm/generators.json b/tools/typeorm/generators.json index d5c1a05..96f0edf 100644 --- a/tools/typeorm/generators.json +++ b/tools/typeorm/generators.json @@ -5,12 +5,6 @@ "schema": "./src/generators/typeorm-model-generator/schema.json", "aliases": ["tomg"], "description": "Creates typeorm entities via typeorm-model-generator." - }, - "typeorm-model-generator-scaffold": { - "factory": "./src/generators/typeorm-model-generator-scaffold/typeorm-model-generator-scaffold", - "schema": "./src/generators/typeorm-model-generator-scaffold/schema.json", - "aliases": ["tomg-scaffold"], - "description": "Scaffolds a project with typeorm-model-generator config files." } } } diff --git a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.d.ts b/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.d.ts deleted file mode 100644 index a68478c..0000000 --- a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface TomgGeneratorSchema { - project: string; -} diff --git a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.json b/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.json deleted file mode 100644 index 5f1cc14..0000000 --- a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/schema", - "$id": "typeorm-model-generator-scaffold", - "title": "", - "description": "Scaffolds a project with typeorm-model-generator config files.", - "type": "object", - "properties": { - "project": { - "description": "The project to scaffold.", - "type": "string", - "alias": "p", - "x-prompt": "Which project to scaffold?", - "x-dropdown": "projects" - } - }, - "required": [] -} diff --git a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/typeorm-model-generator-scaffold.ts b/tools/typeorm/src/generators/typeorm-model-generator-scaffold/typeorm-model-generator-scaffold.ts deleted file mode 100644 index d160294..0000000 --- a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/typeorm-model-generator-scaffold.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { - formatFiles, - generateFiles, - joinPathFragments, - OverwriteStrategy, - readProjectConfiguration, - Tree, -} from '@nx/devkit'; - -import { TomgGeneratorSchema } from './schema'; - -export async function tomgScaffoldGenerator( - tree: Tree, - options: TomgGeneratorSchema -) { - const libraryRoot = readProjectConfiguration(tree, options.project).root; - - generateFiles( - tree, - joinPathFragments(__dirname, './files'), - libraryRoot, - options, - { overwriteStrategy: OverwriteStrategy.KeepExisting } - ); - - await formatFiles(tree); -} - -export default tomgScaffoldGenerator; diff --git a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/files/.tomg-config.template b/tools/typeorm/src/generators/typeorm-model-generator/files/.tomg-config.template similarity index 100% rename from tools/typeorm/src/generators/typeorm-model-generator-scaffold/files/.tomg-config.template rename to tools/typeorm/src/generators/typeorm-model-generator/files/.tomg-config.template diff --git a/tools/typeorm/src/generators/typeorm-model-generator-scaffold/files/.tomg-naming-strategy.js.template b/tools/typeorm/src/generators/typeorm-model-generator/files/.tomg-naming-strategy.js.template similarity index 100% rename from tools/typeorm/src/generators/typeorm-model-generator-scaffold/files/.tomg-naming-strategy.js.template rename to tools/typeorm/src/generators/typeorm-model-generator/files/.tomg-naming-strategy.js.template diff --git a/tools/typeorm/src/generators/typeorm-model-generator/typeorm-model-generator.ts b/tools/typeorm/src/generators/typeorm-model-generator/typeorm-model-generator.ts index 7204e1a..48d536d 100644 --- a/tools/typeorm/src/generators/typeorm-model-generator/typeorm-model-generator.ts +++ b/tools/typeorm/src/generators/typeorm-model-generator/typeorm-model-generator.ts @@ -1,22 +1,34 @@ import { + FileChange, formatFiles, generateFiles, joinPathFragments, OverwriteStrategy, readProjectConfiguration, Tree, + workspaceRoot, } from '@nx/devkit'; import execa from 'execa'; import os from 'node:os'; -import fs from 'node:fs/promises'; -import path from 'node:path'; +import { mkdirSync, writeFileSync, chmodSync, rmSync } from 'node:fs'; +import { mkdtemp, rm } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; import { TomgGeneratorSchema } from './schema'; export async function tomgGenerator(tree: Tree, options: TomgGeneratorSchema) { const libraryRoot = readProjectConfiguration(tree, options.project).root; - const tmpDirPath = await fs.mkdtemp(path.join(os.tmpdir(), 'tomg-')); + generateFiles( + tree, + joinPathFragments(__dirname, './files'), + libraryRoot, + options, + { overwriteStrategy: OverwriteStrategy.KeepExisting } + ); + flushChanges(workspaceRoot, tree.listChanges()); + + const tmpDirPath = await mkdtemp(join(os.tmpdir(), 'tomg-')); const { stdout, stderr } = await execa( `typeorm-model-generator`, [ @@ -49,7 +61,7 @@ export async function tomgGenerator(tree: Tree, options: TomgGeneratorSchema) { ); await formatFiles(tree); - await fs.rm(tmpDirPath, { recursive: true, force: true }); + await rm(tmpDirPath, { recursive: true, force: true }); console.log(); console.log('Generation complete.'); @@ -57,3 +69,19 @@ export async function tomgGenerator(tree: Tree, options: TomgGeneratorSchema) { } export default tomgGenerator; + +function flushChanges(root: string, fileChanges: FileChange[]): void { + fileChanges.forEach((f) => { + const fpath = join(root, f.path); + if (f.type === 'CREATE') { + mkdirSync(dirname(fpath), { recursive: true }); + writeFileSync(fpath, f.content); + if (f.options?.mode) chmodSync(fpath, f.options.mode); + } else if (f.type === 'UPDATE') { + writeFileSync(fpath, f.content); + if (f.options?.mode) chmodSync(fpath, f.options.mode); + } else if (f.type === 'DELETE') { + rmSync(fpath, { recursive: true, force: true }); + } + }); +}