| 12345678910111213141516171819202122232425262728293031323334353637 |
- const { copyFileSync, mkdirSync, readFileSync, writeFileSync } = require('node:fs')
- const { createHash } = require('node:crypto')
- const { basename, resolve } = require('node:path')
- const repoRoot = resolve(__dirname, '..')
- const mobileRoot = resolve(repoRoot, 'mobile-app')
- const variant = process.argv.includes('--oem') ? 'oem' : 'standard'
- const packageJson = JSON.parse(readFileSync(resolve(mobileRoot, 'package.json'), 'utf8'))
- const displayVersion = packageJson.version.replace(/^(\d+\.\d+\.\d+)-(\d+)$/, '$1.$2')
- const gradle = readFileSync(resolve(mobileRoot, 'android-capacitor', 'app', 'build.gradle'), 'utf8')
- const versionCode = Number(gradle.match(/\bversionCode\s+(\d+)/)?.[1] || 0)
- if (!versionCode) throw new Error('Unable to read Android versionCode from app/build.gradle')
- const sourceName = `Mini7-One-Pad-${displayVersion}-${variant}-debug.apk`
- const sourceApk = resolve(mobileRoot, 'dist', sourceName)
- const publicName = `Mini7-One-Pad-${displayVersion}-${variant}.apk`
- const outputDir = resolve(mobileRoot, 'dist', 'update', variant)
- const outputApk = resolve(outputDir, publicName)
- mkdirSync(outputDir, { recursive: true })
- copyFileSync(sourceApk, outputApk)
- const sha256 = createHash('sha256').update(readFileSync(outputApk)).digest('hex')
- const manifest = {
- version: displayVersion,
- versionCode,
- url: publicName,
- sha256,
- notes: process.env.MINI7_UPDATE_NOTES || '',
- mandatory: process.env.MINI7_UPDATE_MANDATORY === 'true'
- }
- writeFileSync(resolve(outputDir, 'latest.json'), `${JSON.stringify(manifest, null, 2)}\n`)
- writeFileSync(resolve(outputDir, `${basename(outputApk)}.sha256`), `${sha256} ${publicName}\n`)
- console.log(`[Pad Update] Upload everything in: ${outputDir}`)
- console.log(`[Pad Update] Version: ${displayVersion} (${versionCode}), variant: ${variant}`)
|