feat(reporter): print Emigrate CLI's version number and relative paths to migrations (#39)

* feat(reporter-default): print CLI version number

* feat(reporter-default): print relative paths to migrations instead of only the file names

This makes the output clickable in most shells

* feat(reporter-pino): include the Emigrate CLI version in each log
This commit is contained in:
Joakim Carlstein 2023-12-14 13:45:02 +01:00 committed by GitHub
parent 480796e95b
commit 1434be5d5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 9 deletions

View file

@ -1,4 +1,3 @@
import path from 'node:path';
import { black, blueBright, bold, cyan, dim, faint, gray, green, red, redBright, yellow } from 'ansis';
import logUpdate from 'log-update';
import elegantSpinner from 'elegant-spinner';
@ -25,10 +24,10 @@ const formatDuration = (duration: number): string => {
return yellow(pretty.replaceAll(/([^\s\d]+)/g, dim('$1')));
};
const getTitle = ({ command, directory, dry, cwd }: ReporterInitParameters) => {
return `${black.bgBlueBright(' Emigrate ').trim()} ${blueBright.bold(command)} ${gray(cwd + path.sep)}${directory}${
dry ? yellow` (dry run)` : ''
}`;
const getTitle = ({ command, version, dry, cwd }: ReporterInitParameters) => {
return `${black.bgBlueBright(' Emigrate ').trim()} ${blueBright.bold(command)} ${blueBright(`v${version}`)} ${gray(
cwd,
)}${dry ? yellow` (dry run)` : ''}`;
};
const getMigrationStatus = (
@ -94,11 +93,12 @@ const getMigrationText = (
migration: MigrationMetadata | MigrationMetadataFinished,
activeMigration?: MigrationMetadata,
) => {
const pathWithoutName = migration.relativeFilePath.slice(0, -migration.name.length);
const nameWithoutExtension = migration.name.slice(0, -migration.extension.length);
const status = getMigrationStatus(migration, activeMigration);
const parts = [' ', getIcon(status)];
parts.push(`${getName(nameWithoutExtension, status)}${dim(migration.extension)}`);
parts.push(`${dim(pathWithoutName)}${getName(nameWithoutExtension, status)}${dim(migration.extension)}`);
if ('status' in migration) {
parts.push(gray(`(${migration.status})`));