Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions android/autolink.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
readTextFile,
writeTextFile,
} from "../scripts/helpers.js";
import { mkdir_p } from "../scripts/utils/filesystem.mjs";
import { mkdir_p, writeJSONFile } from "../scripts/utils/filesystem.mjs";

/**
* @typedef {import("@react-native-community/cli-types").Config} Config
Expand Down Expand Up @@ -97,7 +97,7 @@ async function loadConfig(json, projectRoot) {
const prunedConfig = pruneDependencies(config);

ensureDirForFile(json);
writeTextFile(json, JSON.stringify(prunedConfig, undefined, 2) + "\n");
writeJSONFile(json, prunedConfig);
writeTextFile(stateFile, state);
return prunedConfig;
}
Expand All @@ -117,12 +117,11 @@ async function main(projectRoot, output) {
);
const dependencies = pickAndroidDependencies(config);

const json = JSON.stringify(dependencies, undefined, 2);
if (!output) {
console.log(json);
console.log(JSON.stringify(dependencies, undefined, 2));
} else {
ensureDirForFile(output);
writeTextFile(output, json + "\n");
writeJSONFile(output, dependencies);
}
}

Expand Down
9 changes: 7 additions & 2 deletions ios/assetsCatalog.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ import * as nodefs from "node:fs";
import * as path from "node:path";
import { sourceForAppConfig } from "../scripts/appConfig.mjs";
import { readJSONFile } from "../scripts/helpers.js";
import { cp_r, mkdir_p, rm_r } from "../scripts/utils/filesystem.mjs";
import {
cp_r,
mkdir_p,
rm_r,
writeJSONFile,
} from "../scripts/utils/filesystem.mjs";
import { isObject, projectPath } from "./utils.mjs";

/**
Expand Down Expand Up @@ -146,6 +151,6 @@ export function generateAssetsCatalogs(

const contents = { images, info: template["info"] };
const dest = path.join(appIconSet, "Contents.json");
fs.writeFileSync(dest, JSON.stringify(contents, undefined, 2));
writeJSONFile(dest, contents, fs);
}
}
4 changes: 2 additions & 2 deletions scripts/internal/prepare-viewfinder.mts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/usr/bin/env -S node --experimental-transform-types --no-warnings

import { spawnSync } from "node:child_process";
import * as fs from "node:fs";
import * as path from "node:path";
import { URL, fileURLToPath } from "node:url";
import { readJSONFile } from "../helpers.js";
import { writeJSONFile } from "../utils/filesystem.mjs";

const APP_IDENTIFIER = "com.microsoft.ReactNativeViewfinder";
const PACKAGE_MANAGER = "yarn";
Expand Down Expand Up @@ -34,7 +34,7 @@ function configureAppManifest() {
},
};

fs.writeFileSync(APP_MANIFEST, JSON.stringify(manifest, null, 2) + "\n");
writeJSONFile(APP_MANIFEST, manifest);
}

/**
Expand Down
23 changes: 8 additions & 15 deletions scripts/internal/set-react-version.mts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
* Reminder that this script is meant to be runnable without installing
* dependencies. It can therefore not rely on any external libraries.
*/
import { promises as fs } from "node:fs";
import * as os from "node:os";
import * as fs from "node:fs";
import * as path from "node:path";
import * as util from "node:util";
import {
Expand All @@ -14,6 +13,7 @@ import {
v,
} from "../helpers.js";
import type { Manifest } from "../types.js";
import { writeJSONFile } from "../utils/filesystem.mjs";
import { fetchPackageMetadata, npmRegistryBaseURL } from "../utils/npm.mjs";

const VALID_TAGS = ["canary-macos", "canary-windows", "nightly"];
Expand All @@ -36,12 +36,12 @@ function searchReplaceInFile(
filename: string,
searchValue: string | RegExp,
replaceValue: string
): Promise<void> {
): void {
const current = readTextFile(filename);
const updated = current.replace(searchValue, replaceValue);
return updated === current
? Promise.resolve()
: fs.writeFile(filename, updated);
if (updated !== current) {
fs.writeFileSync(filename, updated);
}
}

/**
Expand Down Expand Up @@ -331,7 +331,6 @@ export async function setReactVersion(
coreOnly: boolean,
overrides: Record<string, string> = {}
): Promise<void> {
let fd: fs.FileHandle | undefined;
try {
const profile = { ...(await getProfile(version, coreOnly)), ...overrides };
console.dir(profile, { depth: null });
Expand Down Expand Up @@ -363,18 +362,12 @@ export async function setReactVersion(
}

const tmpFile = manifestPath + ".tmp";
fd = await fs.open(tmpFile, "w", 0o644);
await fd.write(JSON.stringify(manifest, undefined, 2));
await fd.write(os.EOL);
await fd.close();
fd = undefined;
await fs.rename(tmpFile, manifestPath);
writeJSONFile(tmpFile, manifest);
fs.renameSync(tmpFile, manifestPath);
}
} catch (e) {
console.error(e);
process.exitCode = 1;
} finally {
fd?.close();
}
}

Expand Down
11 changes: 11 additions & 0 deletions scripts/utils/filesystem.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,14 @@ export function mkdir_p(p, fs = nodefs) {
export function rm_r(p, fs = nodefs) {
fs.rmSync(p, RM_R_OPTIONS);
}

/**
* @param {string} path
* @param {unknown} obj
*/
export function writeJSONFile(path, obj, fs = nodefs) {
const fd = fs.openSync(path, "w", 0o644);
fs.writeSync(fd, JSON.stringify(obj, undefined, 2));
fs.writeSync(fd, "\n");
fs.closeSync(fd);
}
Loading