const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); const rootDir = path.join(__dirname, '..'); function readPackageVersion() { try { const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8')); return pkg.version || '0.0.0'; } catch { return '0.0.0'; } } function readGitSha() { if (process.env.GIT_SHA) { return process.env.GIT_SHA; } try { return execSync('git rev-parse --short HEAD', { cwd: rootDir, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], }).trim(); } catch { return ''; } } function getVersionInfo() { const dbName = process.env.DB_NAME || ''; const appEnv = process.env.APP_ENV || (dbName === 'gallery_prod' ? 'prod' : 'dev'); const imageTag = process.env.IMAGE_TAG || (appEnv === 'prod' ? 'unknown' : 'dev-local'); return { app_env: appEnv, app_version: process.env.APP_VERSION || readPackageVersion(), image_tag: imageTag, git_sha: readGitSha(), built_at: process.env.BUILD_TIME || '', db_name: dbName, public_url: process.env.PUBLIC_URL || '', }; } module.exports = { getVersionInfo };