mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-04 12:25:19 -04:00

* feat: streamline code styles * feat: spacing for comments and return statements * chore: enforce camelcase * fix: remove npm lock file * fix: add integrity test * fix: remove logfile * chore: update node in test workflow
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import * as core from '@actions/core';
|
|
import * as semver from 'semver';
|
|
|
|
export default class AndroidVersioning {
|
|
static determineVersionCode(version, inputVersionCode) {
|
|
if (!inputVersionCode) {
|
|
return AndroidVersioning.versionToVersionCode(version);
|
|
}
|
|
|
|
return inputVersionCode;
|
|
}
|
|
|
|
static versionToVersionCode(version) {
|
|
if (version === 'none') {
|
|
core.info(`Versioning strategy is set to ${version}, so android version code should not be applied.`);
|
|
|
|
return 0;
|
|
}
|
|
|
|
const parsedVersion = semver.parse(version);
|
|
|
|
if (!parsedVersion) {
|
|
core.warning(`Could not parse "${version}" to semver, defaulting android version code to 1`);
|
|
|
|
return 1;
|
|
}
|
|
|
|
// The greatest value Google Plays allows is 2100000000.
|
|
// Allow for 3 patch digits, 3 minor digits and 3 major digits.
|
|
const versionCode = parsedVersion.major * 1000000 + parsedVersion.minor * 1000 + parsedVersion.patch;
|
|
|
|
if (versionCode >= 2050000000) {
|
|
throw new Error(
|
|
`Generated versionCode ${versionCode} is dangerously close to the maximum allowed number 2100000000. Consider a different versioning scheme to be able to continue updating your application.`,
|
|
);
|
|
}
|
|
core.info(`Using android versionCode ${versionCode}`);
|
|
|
|
return versionCode;
|
|
}
|
|
|
|
static determineSdkManagerParameters(targetSdkVersion) {
|
|
const parsedVersion = Number.parseInt(targetSdkVersion.slice(-2), 10);
|
|
|
|
return Number.isNaN(parsedVersion) ? '' : `platforms;android-${parsedVersion}`;
|
|
}
|
|
}
|