app-build-meta.ts 882 B

12345678910111213141516171819202122232425262728293031
  1. // web-admin/scripts/app-build-meta.ts
  2. import fs from 'node:fs'
  3. import path from 'node:path'
  4. export type AppBuildMeta = {
  5. version: string
  6. buildId: string
  7. }
  8. export function readGitShort(run: () => string): string {
  9. try {
  10. const text = run().trim()
  11. return text || 'nogit'
  12. } catch {
  13. return 'nogit'
  14. }
  15. }
  16. export function createAppBuildMeta(version: string, nowMs: number, gitShort: string): AppBuildMeta {
  17. const hash = gitShort.trim() || 'nogit'
  18. return { version, buildId: `${hash}-${nowMs}` }
  19. }
  20. export function versionJsonText(meta: AppBuildMeta): string {
  21. return `${JSON.stringify({ version: meta.version, buildId: meta.buildId }, null, 2)}\n`
  22. }
  23. export function writeVersionJson(outDir: string, meta: AppBuildMeta): void {
  24. fs.mkdirSync(outDir, { recursive: true })
  25. fs.writeFileSync(path.join(outDir, 'version.json'), versionJsonText(meta), 'utf8')
  26. }