mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 21:24:26 +08:00
Undo the test script changes, which broke the integrated checkout workflow. Bug: none Change-Id: I1a29f605949265510c15725b1fd370b9ddd369ec Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6415791 Auto-Submit: Philip Pfaffe <pfaffe@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org> Commit-Queue: Philip Pfaffe <pfaffe@chromium.org>
89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
// Copyright 2024 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import * as childProcess from 'child_process';
|
|
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
import yargs from 'yargs';
|
|
import unparse from 'yargs-unparser';
|
|
|
|
const argv = yargs(process.argv.slice(2))
|
|
.parserConfiguration({
|
|
'strip-aliased': true,
|
|
})
|
|
.command('$0 [script]')
|
|
.option('target', { alias: 't', type: 'string', default: 'Default' })
|
|
.help(false)
|
|
.version(false)
|
|
.parseSync();
|
|
|
|
const target = argv.target;
|
|
let script = argv.script;
|
|
|
|
delete argv.target;
|
|
delete argv.script;
|
|
|
|
let sourceRoot = path.dirname(path.dirname(path.resolve(argv['$0'])));
|
|
|
|
// Ensure that we can find the node_modules folder even if the out folder is
|
|
// not a sibling of the node_modules folder.
|
|
const env = process.env;
|
|
env.NODE_PATH = path.join(sourceRoot, 'node_modules');
|
|
|
|
let cwd = path.join(sourceRoot, 'out', target);
|
|
|
|
if (!fs.existsSync(cwd)) {
|
|
// Check if we are in a Chromium checkout and look for the out folder there.
|
|
const maybeChromiumRoot = path.dirname(
|
|
path.dirname(path.dirname(sourceRoot)),
|
|
);
|
|
if (
|
|
sourceRoot ===
|
|
path.join(maybeChromiumRoot, 'third_party', 'devtools-frontend', 'src')
|
|
) {
|
|
sourceRoot = maybeChromiumRoot;
|
|
cwd = path.join(sourceRoot, 'out', target);
|
|
const pathParts = script.split(path.sep);
|
|
if (pathParts[0] === 'gen') {
|
|
pathParts.shift();
|
|
pathParts.unshift('gen', 'third_party', 'devtools-frontend', 'src');
|
|
script = pathParts.join(path.sep);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (
|
|
!fs.existsSync(cwd) ||
|
|
!fs.statSync(cwd).isDirectory() ||
|
|
!fs.existsSync(path.join(cwd, 'build.ninja'))
|
|
) {
|
|
console.error(
|
|
`Target path ${cwd} does not exist or is not a directory. Please run 'gn gen out/${target}' first.`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
const scriptPath = path.resolve(cwd, script);
|
|
if (!fs.existsSync(scriptPath)) {
|
|
console.error(`Script path ${scriptPath} does not exist, trying ninja...`);
|
|
const { error, status } = childProcess.spawnSync(
|
|
'autoninja',
|
|
['-C', cwd, script],
|
|
{ stdio: 'inherit', cwd: sourceRoot },
|
|
);
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
if (status) {
|
|
process.exit(status);
|
|
}
|
|
}
|
|
|
|
const { argv0 } = process;
|
|
const { status } = childProcess.spawnSync(
|
|
argv0,
|
|
[scriptPath, ...unparse(argv)],
|
|
{ stdio: 'inherit', env },
|
|
);
|
|
process.exit(status);
|