[ios][prebuild] simplify logging in prebuild scripts

To reduce reduntant code by repeating the logging functionality in each JS module, this commit introduces a factory for creating a logger with a given prefix.

- Create factory `createLogger`
- Remove redundant log implementations
- Changed to use factory in hermes.js and ios-prebuild.js
This commit is contained in:
Christian Falch
2025-05-22 12:00:12 +02:00
parent 2dc20c5dc7
commit e447e9aea7
3 changed files with 24 additions and 31 deletions
+3 -1
View File
@@ -11,7 +11,7 @@
const {prepareHermesArtifactsAsync} = require('./ios-prebuild/hermes');
const {
createFolderIfNotExists,
prebuildLog,
createLogger,
throwIfOnEden,
} = require('./ios-prebuild/utils');
const {execSync} = require('child_process');
@@ -24,6 +24,8 @@ const packageJsonPath = path.join(
'package.json',
);
const prebuildLog = createLogger('Prebuild');
// $FlowIgnore[unsupported-syntax]
const {version: currentVersion} = require(packageJsonPath);
+3 -16
View File
@@ -8,12 +8,15 @@
* @format
*/
const {createLogger} = require('./utils');
const {execSync} = require('child_process');
const fs = require('fs');
const path = require('path');
const stream = require('stream');
const {promisify} = require('util');
const pipeline = promisify(stream.pipeline);
const hermesLog = createLogger('Hermes');
/**
* Downloads hermes artifacts from the specified version and build type. If you want to specify a specific
@@ -359,22 +362,6 @@ function abort(message /*: string */) {
throw new Error(message);
}
function hermesLog(
message /*: string */,
level /*: 'info' | 'warning' | 'error' */ = 'warning',
) {
// Simple log coloring for terminal output
const prefix = '[Hermes] ';
let colorFn = (x /*:string*/) => x;
if (process.stdout.isTTY) {
if (level === 'info') colorFn = x => `\x1b[32m${x}\x1b[0m`;
else if (level === 'error') colorFn = x => `\x1b[31m${x}\x1b[0m`;
else colorFn = x => `\x1b[33m${x}\x1b[0m`;
}
console.log(colorFn(prefix + message));
}
module.exports = {
prepareHermesArtifactsAsync,
};
+18 -14
View File
@@ -37,24 +37,28 @@ function throwIfOnEden() {
throw new Error('Cannot prepare the iOS prebuilds on an Eden checkout');
}
function prebuildLog(
message /*: string */,
level /*: 'info' | 'warning' | 'error' */ = 'warning',
) {
// Simple log coloring for terminal output
const prefix = '[Prebuild] ';
let colorFn = (x /*:string*/) => x;
if (process.stdout.isTTY) {
if (level === 'info') colorFn = x => `\x1b[32m${x}\x1b[0m`;
else if (level === 'error') colorFn = x => `\x1b[31m${x}\x1b[0m`;
else colorFn = x => `\x1b[33m${x}\x1b[0m`;
}
function createLogger(
prefix /*: string */,
) /*: (message: string, level?: 'info' | 'warning' | 'error') => void */ {
return function (
message /*: string */,
level /*: 'info' | 'warning' | 'error' */ = 'info',
) {
// Simple log coloring for terminal output
const resolvedPrefix = `[${prefix}] `;
let colorFn = (x /*:string*/) => x;
if (process.stdout.isTTY) {
if (level === 'info') colorFn = x => `\x1b[32m${x}\x1b[0m`;
else if (level === 'error') colorFn = x => `\x1b[31m${x}\x1b[0m`;
else colorFn = x => `\x1b[33m${x}\x1b[0m`;
}
console.log(colorFn(prefix + message));
console.log(colorFn(resolvedPrefix) + message);
};
}
module.exports = {
createFolderIfNotExists,
throwIfOnEden,
prebuildLog,
createLogger,
};