Your music, beautifully tracked. All yours. (coming soon) teal.fm
teal-fm atproto
Something went wrong. Try again.
2.8 kB ยท 97 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697import { execa } from 'execa';import pc from 'picocolors';import { findWorkspaceRoot } from '../utils/workspace.js';
export async function diff(commit: string = 'HEAD~1') { const workspaceRoot = findWorkspaceRoot(); console.log(pc.blue(`๐ Showing lexicon changes since ${commit}...`)); try { await showLexiconDiff(workspaceRoot, commit); await showGeneratedDiff(workspaceRoot, commit); } catch (error) { console.error(pc.red('โ Diff failed:'), error instanceof Error ? error.message : String(error)); process.exit(1); }}
async function showLexiconDiff(workspaceRoot: string, commit: string) { console.log(pc.cyan(' ๐ Lexicon source changes:')); try { const { stdout } = await execa('git', [ 'diff', '--name-only', commit, 'HEAD', 'lexicons/' ], { cwd: workspaceRoot, stdio: 'pipe' }); if (stdout.trim()) { console.log(pc.yellow(' Changed files:')); stdout.split('\n').forEach(file => { if (file.trim()) { console.log(pc.gray(` ${file}`)); } }); // Show actual diff for lexicon files const { stdout: diffOutput } = await execa('git', [ 'diff', commit, 'HEAD', 'lexicons/' ], { cwd: workspaceRoot, stdio: 'pipe' }); if (diffOutput.trim()) { console.log(pc.cyan('\n Detailed changes:')); console.log(diffOutput); } } else { console.log(pc.green(' โ No lexicon source changes')); } } catch (error) { console.log(pc.yellow(' โ ๏ธ Could not check lexicon diff (not a git repo?)')); }}
async function showGeneratedDiff(workspaceRoot: string, commit: string) { console.log(pc.cyan('\n ๐ Generated type changes:')); try { const { stdout } = await execa('git', [ 'diff', '--name-only', commit, 'HEAD', 'packages/lexicons/src/types/', 'services/types/src/' ], { cwd: workspaceRoot, stdio: 'pipe' }); if (stdout.trim()) { console.log(pc.yellow(' Changed generated files:')); stdout.split('\n').forEach(file => { if (file.trim()) { console.log(pc.gray(` ${file}`)); } }); console.log(pc.cyan(`\n ๐ก Run 'git diff ${commit} HEAD -- packages/lexicons/src/types/' to see TypeScript changes`)); console.log(pc.cyan(` ๐ก Run 'git diff ${commit} HEAD -- services/types/src/' to see Rust changes`)); } else { console.log(pc.green(' โ No generated type changes')); } } catch (error) { console.log(pc.yellow(' โ ๏ธ Could not check generated file diff')); }}