47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
#!/usr/bin/env tsx
|
|
|
|
/**
|
|
* Update theme from upstream repository
|
|
* Usage: pnpm update-theme
|
|
*/
|
|
|
|
import { execSync } from 'node:child_process'
|
|
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
import process from 'node:process'
|
|
|
|
// Check and set up the upstream remote repository
|
|
try {
|
|
execSync('git remote get-url upstream', { stdio: 'ignore' })
|
|
} catch {
|
|
execSync('git remote add upstream https://github.com/the3ash/astro-chiri.git', {
|
|
stdio: 'inherit'
|
|
})
|
|
}
|
|
|
|
// Update theme from upstream repository
|
|
try {
|
|
execSync('git fetch upstream', { stdio: 'inherit' })
|
|
|
|
const currentCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim()
|
|
execSync('git merge upstream/main --allow-unrelated-histories', { stdio: 'inherit' })
|
|
const newCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim()
|
|
|
|
if (currentCommit === newCommit) {
|
|
console.log('🤗 No updates available, already up to date')
|
|
} else {
|
|
console.log('✅ Theme updated')
|
|
}
|
|
} catch (error) {
|
|
// Check if there's a merge conflict
|
|
const gitDirectory = execSync('git rev-parse --git-dir', { encoding: 'utf8' }).trim()
|
|
const mergeHeadFile = path.join(gitDirectory, 'MERGE_HEAD')
|
|
|
|
if (fs.existsSync(mergeHeadFile)) {
|
|
console.log('⚠️ Update fetched with merge conflicts. Please resolve manually')
|
|
} else {
|
|
console.error('❌ Update failed:', error)
|
|
process.exit(1)
|
|
}
|
|
}
|