Improve androidVersionCode parsing and application (#297)

This commit is contained in:
David Finol 2021-11-15 11:12:37 -06:00 committed by GitHub
parent 13fdcad790
commit 11a0d0947e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 3 deletions

View File

@ -15,7 +15,12 @@ namespace UnityBuilderAction.Versioning
} }
public static void SetAndroidVersionCode(string androidVersionCode) { public static void SetAndroidVersionCode(string androidVersionCode) {
PlayerSettings.Android.bundleVersionCode = Int32.Parse(androidVersionCode); int bundleVersionCode = Int32.Parse(androidVersionCode);
if (bundleVersionCode <= 0) {
return;
}
PlayerSettings.Android.bundleVersionCode = bundleVersionCode;
} }
static void Apply(string version) static void Apply(string version)

BIN
dist/index.js generated vendored

Binary file not shown.

BIN
dist/index.js.map generated vendored

Binary file not shown.

View File

@ -2,6 +2,10 @@ import AndroidVersioning from './android-versioning';
describe('Android Versioning', () => { describe('Android Versioning', () => {
describe('versionToVersionCode', () => { describe('versionToVersionCode', () => {
it('defaults to 0 when versioning strategy is none', () => {
expect(AndroidVersioning.versionToVersionCode('none')).toBe(0);
});
it('defaults to 1 when version is not a valid semver', () => { it('defaults to 1 when version is not a valid semver', () => {
expect(AndroidVersioning.versionToVersionCode('abcd')).toBe(1); expect(AndroidVersioning.versionToVersionCode('abcd')).toBe(1);
}); });
@ -11,7 +15,7 @@ describe('Android Versioning', () => {
}); });
it('throw when generated version code is too large', () => { it('throw when generated version code is too large', () => {
expect(() => AndroidVersioning.versionToVersionCode('1234.0.0')).toThrow(); expect(() => AndroidVersioning.versionToVersionCode('2050.0.0')).toThrow();
}); });
}); });

View File

@ -10,6 +10,11 @@ export default class AndroidVersioning {
} }
static versionToVersionCode(version) { 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); const parsedVersion = semver.parse(version);
if (!parsedVersion) { if (!parsedVersion) {
@ -21,7 +26,7 @@ export default class AndroidVersioning {
// Allow for 3 patch digits, 3 minor digits and 3 major digits. // Allow for 3 patch digits, 3 minor digits and 3 major digits.
const versionCode = parsedVersion.major * 1000000 + parsedVersion.minor * 1000 + parsedVersion.patch; const versionCode = parsedVersion.major * 1000000 + parsedVersion.minor * 1000 + parsedVersion.patch;
if (versionCode >= 1000000000) { if (versionCode >= 2050000000) {
throw new Error( 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.`, `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.`,
); );