Skip to content

Commit 1edee9a

Browse files
deep equals
1 parent 9b1218a commit 1edee9a

4 files changed

Lines changed: 63 additions & 5 deletions

File tree

dist/index.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58316,6 +58316,7 @@ exports.XcodeProject = XcodeProject;
5831658316

5831758317
Object.defineProperty(exports, "__esModule", ({ value: true }));
5831858318
exports.log = log;
58319+
exports.DeepEqual = DeepEqual;
5831958320
const core = __nccwpck_require__(2186);
5832058321
function log(message, type = 'info') {
5832158322
if (type == 'info' && !core.isDebug()) {
@@ -58345,6 +58346,36 @@ function log(message, type = 'info') {
5834558346
}
5834658347
}
5834758348
}
58349+
function DeepEqual(a, b) {
58350+
if (a === b)
58351+
return true;
58352+
if (typeof a !== typeof b)
58353+
return false;
58354+
if (typeof a !== 'object' || a === null || b === null)
58355+
return false;
58356+
if (Array.isArray(a) !== Array.isArray(b))
58357+
return false;
58358+
if (Array.isArray(a)) {
58359+
if (a.length !== b.length)
58360+
return false;
58361+
for (let i = 0; i < a.length; i++) {
58362+
if (!DeepEqual(a[i], b[i]))
58363+
return false;
58364+
}
58365+
return true;
58366+
}
58367+
const keysA = Object.keys(a);
58368+
const keysB = Object.keys(b);
58369+
if (keysA.length !== keysB.length)
58370+
return false;
58371+
for (const key of keysA) {
58372+
if (!keysB.includes(key))
58373+
return false;
58374+
if (!DeepEqual(a[key], b[key]))
58375+
return false;
58376+
}
58377+
return true;
58378+
}
5834858379

5834958380

5835058381
/***/ }),
@@ -58966,7 +58997,7 @@ async function signMacOSAppBundle(projectRef) {
5896658997
const expectedEntitlementsContent = await fs.promises.readFile(projectRef.entitlementsPath, 'utf8');
5896758998
const expectedEntitlements = plist.parse(expectedEntitlementsContent);
5896858999
const signedEntitlements = plist.parse(entitlementsOutput);
58969-
if (JSON.stringify(expectedEntitlements) !== JSON.stringify(signedEntitlements)) {
59000+
if (!(0, utilities_1.DeepEqual)(expectedEntitlements, signedEntitlements)) {
5897059001
throw new Error('Signed entitlements do not match the expected entitlements!');
5897159002
}
5897259003
}

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/utilities.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,27 @@ export function log(message: string, type: 'info' | 'warning' | 'error' = 'info'
2626
}
2727
}
2828
}
29+
30+
export function DeepEqual(a: any, b: any): boolean {
31+
if (a === b) return true;
32+
if (typeof a !== typeof b) return false;
33+
if (typeof a !== 'object' || a === null || b === null) return false;
34+
if (Array.isArray(a) !== Array.isArray(b)) return false;
35+
36+
if (Array.isArray(a)) {
37+
if (a.length !== b.length) return false;
38+
for (let i = 0; i < a.length; i++) {
39+
if (!DeepEqual(a[i], b[i])) return false;
40+
}
41+
return true;
42+
}
43+
44+
const keysA = Object.keys(a);
45+
const keysB = Object.keys(b);
46+
if (keysA.length !== keysB.length) return false;
47+
for (const key of keysA) {
48+
if (!keysB.includes(key)) return false;
49+
if (!DeepEqual(a[key], b[key])) return false;
50+
}
51+
return true;
52+
}

src/xcode.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import plist = require('plist');
77
import path = require('path');
88
import fs = require('fs');
99
import semver = require('semver');
10-
import { log } from './utilities';
10+
import {
11+
DeepEqual,
12+
log
13+
} from './utilities';
1114
import { SemVer } from 'semver';
1215
import core = require('@actions/core');
1316
import {
@@ -620,7 +623,7 @@ async function signMacOSAppBundle(projectRef: XcodeProject): Promise<void> {
620623
const expectedEntitlementsContent = await fs.promises.readFile(projectRef.entitlementsPath, 'utf8');
621624
const expectedEntitlements = plist.parse(expectedEntitlementsContent);
622625
const signedEntitlements = plist.parse(entitlementsOutput);
623-
if (JSON.stringify(expectedEntitlements) !== JSON.stringify(signedEntitlements)) {
626+
if (!DeepEqual(expectedEntitlements, signedEntitlements)) {
624627
throw new Error('Signed entitlements do not match the expected entitlements!');
625628
}
626629
}
@@ -1136,4 +1139,4 @@ async function execGit(args: string[]): Promise<string> {
11361139
throw new Error(`Git failed with exit code: ${exitCode}`);
11371140
}
11381141
return output;
1139-
}
1142+
}

0 commit comments

Comments
 (0)