From 3b7dcd9cb771a622b08408408f12c2a273ae0314 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Fri, 1 Nov 2019 14:06:09 -0400 Subject: [PATCH] Add ability to log schema changes with rondo cmd New command: rondo schemaLog cd path/to/package rondo schemaLog Also update migrations index.ts after creating migration: rondo createMigration [-p path/to/package] --- packages/scripts/src/run.ts | 10 ++++++- packages/scripts/src/scripts/build.ts | 41 ++++++++++++++++++++++----- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/packages/scripts/src/run.ts b/packages/scripts/src/run.ts index 7459530..ddb03f0 100644 --- a/packages/scripts/src/run.ts +++ b/packages/scripts/src/run.ts @@ -1,11 +1,19 @@ import { getPathVariable } from './modules' import { Subprocess } from './Subprocess' -export async function run(command: string, args: string[], cwd?: string) { +export interface RunOptions { + cwd?: string + env?: Record +} + +export async function run(command: string, args: string[], opts?: RunOptions) { + const env = opts && opts.env || {} + const cwd = opts && opts.cwd return new Subprocess(command, args, { ...process.env, PATH: getPathVariable(), FORCE_COLOR: '1', + ...env, }) .run(cwd) } diff --git a/packages/scripts/src/scripts/build.ts b/packages/scripts/src/scripts/build.ts index 0704e36..d9985f2 100644 --- a/packages/scripts/src/scripts/build.ts +++ b/packages/scripts/src/scripts/build.ts @@ -4,6 +4,7 @@ import {argparse, arg} from '@rondo.dev/argparse' import {findNodeModules} from '../modules' import {join} from 'path' import {run} from '../run' +import { exportDir } from './exportDir' const tsc = 'ttsc' @@ -69,23 +70,49 @@ export async function exec(...argv: string[]) { } exec.help = 'Execute a js or ts file using node or ts-node' +function findTypeORM(project: string) { + const typeorm = findNodeModules(project) + .map(nm => p.join(nm, 'typeorm')) + .find(t => fs.existsSync(t)) + + if (!typeorm) { + throw new Error('typeorm not found') + } + + return typeorm +} + +export async function schemaLog(...argv: string[]) { + const args = argparse({ + project: arg('string', {positional: true, default: '.'}), + }, schemaLog.help) + .parse(argv) + + const { project } = args + + const typeorm = findTypeORM(project) + await run('ts-node', [typeorm, 'schema:log'], { + cwd: project, + }) +} +schemaLog.help = 'Logs schema changes' + export async function createMigration(...argv: string[]) { const args = argparse({ name: arg('string', {required: true, positional: true}), project: arg('string', {alias: 'p', default: '.'}), help: arg('boolean', {alias: 'h'}), + log: arg('boolean', {description: 'Only log schema'}), }, createMigration.help) .parse(argv) const {name, project} = args - const typeorm = findNodeModules(project) - .map(nm => p.join(nm, 'typeorm')) - .find(t => fs.existsSync(t)) - if (!typeorm) { - throw new Error('typeorm not found') - } - await run('ts-node', [typeorm, 'migration:generate', '--name', name], project) + const typeorm = findTypeORM(project) + await run('ts-node', [typeorm, 'migration:generate', '--name', name], { + cwd: project, + }) + await exportDir(argv[0], project) } createMigration.help = 'Generate a new TypeORM migration'