diff --git a/.changeset/little-tools-invite.md b/.changeset/little-tools-invite.md new file mode 100644 index 0000000..448fb0c --- /dev/null +++ b/.changeset/little-tools-invite.md @@ -0,0 +1,6 @@ +--- +'@emigrate/plugin-tools': minor +'@emigrate/cli': minor +--- + +Pass the Emigrate CLI's version number to reporters diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 427f7b3..53494b9 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -365,8 +365,7 @@ Commands: if (command) { console.error(`Unknown command: ${command}\n`); } else if (values.version) { - const { getPackageInfo } = await import('./get-package-info.js'); - const { version } = await getPackageInfo(); + const { version } = await import('./get-package-info.js'); console.log(version); process.exitCode = 0; return; diff --git a/packages/cli/src/commands/list.ts b/packages/cli/src/commands/list.ts index 0e615d9..8641fd9 100644 --- a/packages/cli/src/commands/list.ts +++ b/packages/cli/src/commands/list.ts @@ -6,6 +6,7 @@ import { exec } from '../exec.js'; import { migrationRunner } from '../migration-runner.js'; import { arrayFromAsync } from '../array-from-async.js'; import { collectMigrations } from '../collect-migrations.js'; +import { version } from '../get-package-info.js'; const lazyDefaultReporter = async () => import('../reporters/default.js'); @@ -30,7 +31,7 @@ export default async function listCommand({ directory, reporter: reporterConfig, ); } - await reporter.onInit?.({ command: 'list', cwd, dry: false, directory }); + await reporter.onInit?.({ command: 'list', version, cwd, dry: false, directory }); const [storage, storageError] = await exec(async () => storagePlugin.initializeStorage()); diff --git a/packages/cli/src/commands/new.ts b/packages/cli/src/commands/new.ts index a9e6a35..3967312 100644 --- a/packages/cli/src/commands/new.ts +++ b/packages/cli/src/commands/new.ts @@ -6,6 +6,7 @@ import { type MigrationMetadata } from '@emigrate/plugin-tools/types'; import { BadOptionError, MissingArgumentsError, MissingOptionError, UnexpectedError } from '../errors.js'; import { type Config } from '../types.js'; import { withLeadingPeriod } from '../with-leading-period.js'; +import { version } from '../get-package-info.js'; const lazyDefaultReporter = async () => import('../reporters/default.js'); @@ -36,7 +37,7 @@ export default async function newCommand( ); } - await reporter.onInit?.({ command: 'new', cwd, dry: false, directory }); + await reporter.onInit?.({ command: 'new', version, cwd, dry: false, directory }); let filename: string | undefined; let content: string | undefined; diff --git a/packages/cli/src/commands/remove.ts b/packages/cli/src/commands/remove.ts index 5a87ce7..f48f08b 100644 --- a/packages/cli/src/commands/remove.ts +++ b/packages/cli/src/commands/remove.ts @@ -13,6 +13,7 @@ import { type Config } from '../types.js'; import { getMigration } from '../get-migration.js'; import { getDuration } from '../get-duration.js'; import { exec } from '../exec.js'; +import { version } from '../get-package-info.js'; type ExtraFlags = { force?: boolean; @@ -56,7 +57,7 @@ export default async function removeCommand( return 1; } - await reporter.onInit?.({ command: 'remove', cwd, dry: false, directory }); + await reporter.onInit?.({ command: 'remove', version, cwd, dry: false, directory }); const migrationFile = await getMigration(cwd, directory, name, !force); diff --git a/packages/cli/src/commands/up.test.ts b/packages/cli/src/commands/up.test.ts index 63cc4f5..fe1be22 100644 --- a/packages/cli/src/commands/up.test.ts +++ b/packages/cli/src/commands/up.test.ts @@ -10,6 +10,7 @@ import { type Plugin, type SerializedError, } from '@emigrate/plugin-tools/types'; +import { version } from '../get-package-info.js'; import upCommand from './up.js'; type Mocked = { @@ -30,6 +31,7 @@ describe('up', () => { command: 'up', cwd: '/emigrate', dry: false, + version, directory: 'migrations', }, ]); @@ -105,6 +107,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: false, directory: 'migrations', }, @@ -142,6 +145,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: true, directory: 'migrations', }, @@ -179,6 +183,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: false, directory: 'migrations', }, @@ -204,6 +209,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: false, directory: 'migrations', }, @@ -249,6 +255,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: false, directory: 'migrations', }, @@ -295,6 +302,7 @@ describe('up', () => { { command: 'up', cwd: '/emigrate', + version, dry: false, directory: 'migrations', }, diff --git a/packages/cli/src/commands/up.ts b/packages/cli/src/commands/up.ts index 90435b7..8c1cceb 100644 --- a/packages/cli/src/commands/up.ts +++ b/packages/cli/src/commands/up.ts @@ -10,6 +10,7 @@ import { migrationRunner } from '../migration-runner.js'; import { filterAsync } from '../filter-async.js'; import { collectMigrations } from '../collect-migrations.js'; import { arrayFromAsync } from '../array-from-async.js'; +import { version } from '../get-package-info.js'; type ExtraFlags = { cwd?: string; @@ -48,7 +49,7 @@ export default async function upCommand({ ); } - await reporter.onInit?.({ command: 'up', cwd, dry, directory }); + await reporter.onInit?.({ command: 'up', version, cwd, dry, directory }); const [storage, storageError] = await exec(async () => storagePlugin.initializeStorage()); diff --git a/packages/cli/src/get-package-info.ts b/packages/cli/src/get-package-info.ts index b1ff8c0..9e5a801 100644 --- a/packages/cli/src/get-package-info.ts +++ b/packages/cli/src/get-package-info.ts @@ -5,7 +5,7 @@ type PackageInfo = { version: string; }; -export const getPackageInfo = async () => { +const getPackageInfo = async () => { const packageInfoPath = fileURLToPath(new URL('../package.json', import.meta.url)); try { @@ -26,3 +26,5 @@ export const getPackageInfo = async () => { throw new Error(`Could not read package info from: ${packageInfoPath}`); }; + +export const { version } = await getPackageInfo(); diff --git a/packages/plugin-tools/src/types.ts b/packages/plugin-tools/src/types.ts index a49487f..080d649 100644 --- a/packages/plugin-tools/src/types.ts +++ b/packages/plugin-tools/src/types.ts @@ -180,6 +180,12 @@ export type LoaderPlugin = { }; export type ReporterInitParameters = { + /** + * The version of the emigrate CLI that is being used + * + * @example 1.0.0 + */ + version: string; /** * The command that is being executed */