Skip to content

Commit 4e29279

Browse files
committed
make toPlist synchronous
1 parent b671278 commit 4e29279

File tree

5 files changed

+35
-45
lines changed

5 files changed

+35
-45
lines changed

ios/entitlements.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ function getCodeSignEntitlements(appConfig, targetPlatform) {
4141
* @param {JSONObject} appConfig
4242
* @param {ApplePlatform} targetPlatform
4343
* @param {string} destination
44-
* @returns {Promise<void>}
44+
* @returns {void}
4545
*/
46-
export async function generateEntitlements(
46+
export function generateEntitlements(
4747
appConfig,
4848
targetPlatform,
4949
destination,
@@ -56,7 +56,7 @@ export async function generateEntitlements(
5656
}
5757

5858
const filename = "App.entitlements";
59-
const entitlements = await toPlist(
59+
const entitlements = toPlist(
6060
{
6161
...(targetPlatform === "macos"
6262
? DEFAULT_MACOS_ENTITLEMENTS

ios/privacyManifest.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ function getUserPrivacyManifest(appConfig, targetPlatform) {
5454
* @param {JSONObject} appConfig
5555
* @param {ApplePlatform} targetPlatform
5656
* @param {string} destination
57-
* @returns {Promise<void>}
57+
* @returns {void}
5858
*/
59-
export async function generatePrivacyManifest(
59+
export function generatePrivacyManifest(
6060
appConfig,
6161
targetPlatform,
6262
destination,
@@ -107,6 +107,6 @@ export async function generatePrivacyManifest(
107107
}
108108

109109
const filename = "PrivacyInfo.xcprivacy";
110-
const xcprivacy = await toPlist(manifest, filename);
110+
const xcprivacy = toPlist(manifest, filename);
111111
fs.writeFileSync(path.join(destination, filename), xcprivacy);
112112
}

ios/utils.mjs

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// @ts-check
2-
import { spawn } from "node:child_process";
2+
import { spawnSync } from "node:child_process";
33
import * as path from "node:path";
44
import { fileURLToPath } from "node:url";
55

@@ -30,28 +30,18 @@ export function projectPath(p, targetPlatform) {
3030
/**
3131
* @param {JSONObject} source
3232
* @param {string} filename
33-
* @returns {Promise<string>}
33+
* @returns {string}
3434
*/
3535
export function toPlist(source, filename) {
36-
return new Promise((resolve, reject) => {
37-
const args = ["-convert", "xml1", "-r", "-o", "-", "--", "-"];
38-
const plutil = spawn("/usr/bin/plutil", args, {
39-
stdio: ["pipe", "pipe", "inherit"],
40-
});
41-
42-
/** @type {string[]} */
43-
const data = [];
44-
plutil.stdout.on("data", (chunk) => data.push(chunk.toString()));
36+
const args = ["-convert", "xml1", "-r", "-o", "-", "--", "-"];
37+
const plutil = spawnSync("/usr/bin/plutil", args, {
38+
stdio: ["pipe", "pipe", "inherit"],
39+
input: JSON.stringify(source),
40+
});
4541

46-
plutil.on("exit", (exitCode) => {
47-
if (exitCode !== 0) {
48-
reject(new Error(`Failed to generate '${filename}'`));
49-
} else {
50-
resolve(data.join(""));
51-
}
52-
});
42+
if (plutil.status !== 0) {
43+
throw new Error(`Failed to generate '${filename}'`);
44+
}
5345

54-
plutil.stdin.write(JSON.stringify(source));
55-
plutil.stdin.end();
56-
});
46+
return plutil.stdout.toString();
5747
}

test/ios/entitlements.test.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ describe("generatePrivacyManifest()", macosOnly, () => {
1212
function generateEntitlements(
1313
config: JSONObject,
1414
platform: (typeof targetPlatforms)[number]
15-
): Promise<void> {
15+
): void {
1616
const destination = ".";
1717
fs.mkdirSync(destination, { recursive: true, mode: 0o755 });
18-
return generateEntitlementsActual(config, platform, destination, fs);
18+
generateEntitlementsActual(config, platform, destination, fs);
1919
}
2020

2121
function readEntitlements() {
@@ -29,32 +29,32 @@ describe("generatePrivacyManifest()", macosOnly, () => {
2929
});
3030

3131
for (const platform of targetPlatforms) {
32-
it(`[${platform}] generates a default manifest`, async () => {
33-
await generateEntitlements({}, platform);
32+
it(`[${platform}] generates a default manifest`, () => {
33+
generateEntitlements({}, platform);
3434

3535
deepEqual(readEntitlements(), DEFAULT_ENTITLEMENTS[platform]);
3636
});
3737

38-
it(`[${platform}] handles invalid manifest`, async () => {
39-
await generateEntitlements(
38+
it(`[${platform}] handles invalid manifest`, () => {
39+
generateEntitlements(
4040
{ [platform]: { codeSignEntitlements: false } },
4141
platform
4242
);
4343

4444
deepEqual(readEntitlements(), DEFAULT_ENTITLEMENTS[platform]);
4545
});
4646

47-
it(`[${platform}] does not generate a manifest when a path is specified`, async () => {
48-
await generateEntitlements(
47+
it(`[${platform}] does not generate a manifest when a path is specified`, () => {
48+
generateEntitlements(
4949
{ [platform]: { codeSignEntitlements: "App.entitlements" } },
5050
platform
5151
);
5252

5353
throws(readEntitlements);
5454
});
5555

56-
it(`[${platform}] appends to default manifest`, async () => {
57-
await generateEntitlements(
56+
it(`[${platform}] appends to default manifest`, () => {
57+
generateEntitlements(
5858
{
5959
[platform]: {
6060
codeSignEntitlements: {

test/ios/privacyManifest.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import { fs, setMockFiles } from "../fs.mock.ts";
77
const macosOnly = { skip: process.platform === "win32" };
88

99
describe("generatePrivacyManifest()", macosOnly, () => {
10-
function generatePrivacyManifest(config: JSONObject): Promise<void> {
10+
function generatePrivacyManifest(config: JSONObject): void {
1111
const destination = ".";
1212
fs.mkdirSync(destination, { recursive: true, mode: 0o755 });
13-
return generatePrivacyManifestActual(config, "ios", destination, fs);
13+
generatePrivacyManifestActual(config, "ios", destination, fs);
1414
}
1515

1616
function readPrivacyManifest() {
@@ -23,20 +23,20 @@ describe("generatePrivacyManifest()", macosOnly, () => {
2323
setMockFiles();
2424
});
2525

26-
it("generates a default manifest", async () => {
27-
await generatePrivacyManifest({});
26+
it("generates a default manifest", () => {
27+
generatePrivacyManifest({});
2828

2929
deepEqual(readPrivacyManifest(), DEFAULT_PRIVACY_MANIFEST);
3030
});
3131

32-
it("handles invalid configuration", async () => {
33-
await generatePrivacyManifest({ ios: { privacyManifest: "YES" } });
32+
it("handles invalid configuration", () => {
33+
generatePrivacyManifest({ ios: { privacyManifest: "YES" } });
3434

3535
deepEqual(readPrivacyManifest(), DEFAULT_PRIVACY_MANIFEST);
3636
});
3737

38-
it("appends to default manifest", async () => {
39-
await generatePrivacyManifest({
38+
it("appends to default manifest", () => {
39+
generatePrivacyManifest({
4040
ios: {
4141
privacyManifest: {
4242
NSPrivacyTracking: true,

0 commit comments

Comments
 (0)