32 lines
882 B
TypeScript
32 lines
882 B
TypeScript
// web-admin/scripts/app-build-meta.ts
|
|
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
|
|
export type AppBuildMeta = {
|
|
version: string
|
|
buildId: string
|
|
}
|
|
|
|
export function readGitShort(run: () => string): string {
|
|
try {
|
|
const text = run().trim()
|
|
return text || 'nogit'
|
|
} catch {
|
|
return 'nogit'
|
|
}
|
|
}
|
|
|
|
export function createAppBuildMeta(version: string, nowMs: number, gitShort: string): AppBuildMeta {
|
|
const hash = gitShort.trim() || 'nogit'
|
|
return { version, buildId: `${hash}-${nowMs}` }
|
|
}
|
|
|
|
export function versionJsonText(meta: AppBuildMeta): string {
|
|
return `${JSON.stringify({ version: meta.version, buildId: meta.buildId }, null, 2)}\n`
|
|
}
|
|
|
|
export function writeVersionJson(outDir: string, meta: AppBuildMeta): void {
|
|
fs.mkdirSync(outDir, { recursive: true })
|
|
fs.writeFileSync(path.join(outDir, 'version.json'), versionJsonText(meta), 'utf8')
|
|
}
|