68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
|
|
// scripts/write-version.js
|
|||
|
|
import fs from 'fs'
|
|||
|
|
import { execSync } from 'child_process'
|
|||
|
|
|
|||
|
|
function safeExec(cmd) {
|
|||
|
|
try {
|
|||
|
|
return execSync(cmd, { stdio: ['pipe', 'pipe', 'ignore'], shell: true })
|
|||
|
|
.toString()
|
|||
|
|
.trim()
|
|||
|
|
} catch {
|
|||
|
|
return null
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
let releases = []
|
|||
|
|
let commit = null
|
|||
|
|
|
|||
|
|
if (fs.existsSync('.git') || fs.existsSync('../.git')) {
|
|||
|
|
// Git varsa: tag’lerden oku
|
|||
|
|
const rawTags = safeExec('git tag --list --sort=creatordate')
|
|||
|
|
if (rawTags) {
|
|||
|
|
const tags = rawTags.split('\n').filter(Boolean)
|
|||
|
|
releases = tags.map((tag) => {
|
|||
|
|
const version = tag.replace(/^v/, '')
|
|||
|
|
const date = safeExec(`git log -1 --format=%ad --date=short ${tag}`)
|
|||
|
|
const commitId = safeExec(`git rev-list -n 1 ${tag}`)
|
|||
|
|
const messageRaw = safeExec(`git tag -l --format="%(contents)" ${tag}`)
|
|||
|
|
|
|||
|
|
const changeLog = messageRaw
|
|||
|
|
? messageRaw
|
|||
|
|
.split('\n')
|
|||
|
|
.map((s) => s.trim())
|
|||
|
|
.filter(Boolean)
|
|||
|
|
: ['No changelog for this tag']
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
version,
|
|||
|
|
buildDate: date,
|
|||
|
|
commit: commitId,
|
|||
|
|
changeLog,
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
commit = safeExec('git rev-parse --short HEAD')
|
|||
|
|
} else {
|
|||
|
|
// Git yoksa (ör. dev build)
|
|||
|
|
const pkg = JSON.parse(fs.readFileSync('package.json'))
|
|||
|
|
const version = pkg.version || '0.0.0'
|
|||
|
|
commit = process.env.GIT_COMMIT || 'dev-local'
|
|||
|
|
|
|||
|
|
releases = [
|
|||
|
|
{
|
|||
|
|
version,
|
|||
|
|
buildDate: new Date().toISOString().slice(0, 10),
|
|||
|
|
commit,
|
|||
|
|
changeLog: [
|
|||
|
|
'Local development build',
|
|||
|
|
'Git bilgisi mevcut değil, package.json versiyonu kullanıldı',
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const versionInfo = { commit, releases: releases.reverse() }
|
|||
|
|
|
|||
|
|
fs.writeFileSync('public/version.json', JSON.stringify(versionInfo, null, 2))
|
|||
|
|
console.log('> version.json güncellendi:', versionInfo)
|