mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
[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:
+3
-1
@@ -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
@@ -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
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user