// Set app.json version + Android versionCode from a git tag before prebuild. // Usage: node ci/set-version.mjs v1.2.3 // versionName = 1.2.3 ; versionCode = 1*1_000_000 + 2*1_000 + 3 (monotonic, // so Obtainium installs each new release over the previous one). import { readFileSync, writeFileSync } from "node:fs"; const raw = process.argv[2] || "v0.0.0"; const m = raw.replace(/^v/, "").match(/^(\d+)\.(\d+)\.(\d+)/); if (!m) { console.error(`set-version: cannot parse tag "${raw}"`); process.exit(1); } const [, MA, MI, PA] = m.map(Number); const versionName = `${MA}.${MI}.${PA}`; const versionCode = MA * 1_000_000 + MI * 1_000 + PA; const path = new URL("../app/app.json", import.meta.url); const cfg = JSON.parse(readFileSync(path, "utf8")); cfg.expo.version = versionName; cfg.expo.android = cfg.expo.android || {}; cfg.expo.android.versionCode = versionCode; writeFileSync(path, JSON.stringify(cfg, null, 2) + "\n"); console.log(`set-version: versionName=${versionName} versionCode=${versionCode}`);