diff --git a/tooling/version/src/index.mjs b/tooling/version/src/index.mjs index dee32bbfc..fa03a1b2f 100644 --- a/tooling/version/src/index.mjs +++ b/tooling/version/src/index.mjs @@ -1,4 +1,5 @@ import { execSync } from 'node:child_process'; +import { checkPendingMigrations } from './migrations.mjs'; function runGitCommand(command) { try { @@ -52,4 +53,5 @@ function checkMakerkitVersion() { } } -checkMakerkitVersion(); \ No newline at end of file +checkMakerkitVersion(); +checkPendingMigrations(); \ No newline at end of file diff --git a/tooling/version/src/migrations.mjs b/tooling/version/src/migrations.mjs new file mode 100644 index 000000000..ff71748b8 --- /dev/null +++ b/tooling/version/src/migrations.mjs @@ -0,0 +1,30 @@ +import { execSync } from 'node:child_process'; + +export function checkPendingMigrations() { + try { + console.log('\nChecking for pending migrations...'); + + const output = execSync('pnpm --filter web supabase migration list', { encoding: 'utf-8', stdio: 'pipe' }); + const lines = output.split('\n'); + + // Skip header lines + const migrationLines = lines.slice(4); + + const pendingMigrations = migrationLines + .filter(line => { + const [local, remote] = line.split('│').map(s => s.trim()); + return local !== '' && remote === ''; + }) + .map(line => (line.split('│')[0] ?? '').trim()); + + if (pendingMigrations.length > 0) { + console.log('\x1b[33m%s\x1b[0m', '⚠️ There are pending migrations that need to be applied:'); + pendingMigrations.forEach(migration => console.log(` - ${migration}`)); + console.log('\nPlease run "pnpm --filter web supabase db push" to apply these migrations.'); + } else { + console.log('\x1b[32m%s\x1b[0m', '✅ All migrations are up to date.'); + } + } catch (error) { + console.log('\x1b[33m%s\x1b[0m', '⚠️ No remote Supabase project found. You may not yet have linked your Supabase project. Feel free to ignore this message.'); + } +} \ No newline at end of file