Restore scratch setup bootstrap and live frontdoor sweep

This commit is contained in:
master
2026-03-09 01:42:24 +02:00
parent abda749ffd
commit c9686edf07
13 changed files with 766 additions and 63 deletions

View File

@@ -3,15 +3,25 @@ const { join } = require('path');
const linuxArchivePath = ['.cache', 'chromium', 'chrome-linux64', 'chrome'];
const windowsArchivePath = ['.cache', 'chromium', 'chrome-win64', 'chrome.exe'];
const macArchivePath = [
'.cache',
'chromium',
'chrome-mac',
'Chromium.app',
'Contents',
'MacOS',
'Chromium'
];
const macArchivePath = [
'.cache',
'chromium',
'chrome-mac',
'Chromium.app',
'Contents',
'MacOS',
'Chromium'
];
function sortChromiumDirectories(entries) {
return [...entries].sort((left, right) => {
const leftMatch = /chromium-?(\d+)/i.exec(left);
const rightMatch = /chromium-?(\d+)/i.exec(right);
const leftValue = leftMatch ? Number.parseInt(leftMatch[1], 10) : Number.NEGATIVE_INFINITY;
const rightValue = rightMatch ? Number.parseInt(rightMatch[1], 10) : Number.NEGATIVE_INFINITY;
return rightValue - leftValue;
});
}
function expandVersionedArchives(rootDir = join(__dirname, '..')) {
const base = join(rootDir, '.cache', 'chromium');
@@ -91,19 +101,22 @@ function candidatePaths(rootDir = join(__dirname, '..')) {
const { env } = process;
const playwrightBase = join(rootDir, 'node_modules', 'playwright-core', '.local-browsers');
const homePlaywrightBase = env.HOME ? join(env.HOME, '.cache', 'ms-playwright') : null;
const windowsLocalPlaywrightBase = env.LOCALAPPDATA ? join(env.LOCALAPPDATA, 'ms-playwright') : null;
const windowsProfilePlaywrightBase = env.USERPROFILE ? join(env.USERPROFILE, 'AppData', 'Local', 'ms-playwright') : null;
const playwrightCacheBases = [homePlaywrightBase, windowsLocalPlaywrightBase, windowsProfilePlaywrightBase].filter(Boolean);
let playwrightChromium = [];
try {
if (existsSync(playwrightBase)) {
playwrightChromium = readdirSync(playwrightBase)
.filter((d) => d.startsWith('chromium-'))
const chromiumEntries = sortChromiumDirectories(
readdirSync(playwrightBase).filter((d) => d.startsWith('chromium-'))
);
playwrightChromium = chromiumEntries
.map((d) => join(playwrightBase, d, 'chrome-linux', 'chrome'))
.concat(
readdirSync(playwrightBase)
.filter((d) => d.startsWith('chromium-'))
.map((d) => join(playwrightBase, d, 'chrome-win', 'chrome.exe')),
readdirSync(playwrightBase)
.filter((d) => d.startsWith('chromium-'))
.map((d) => join(playwrightBase, d, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'))
chromiumEntries.map((d) => join(playwrightBase, d, 'chrome-win', 'chrome.exe')),
chromiumEntries.map((d) => join(playwrightBase, d, 'chrome-win64', 'chrome.exe')),
chromiumEntries.map((d) => join(playwrightBase, d, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'))
);
}
} catch {
@@ -112,14 +125,23 @@ function candidatePaths(rootDir = join(__dirname, '..')) {
let homeChromium = [];
try {
if (homePlaywrightBase && existsSync(homePlaywrightBase)) {
homeChromium = readdirSync(homePlaywrightBase)
.filter((d) => d.startsWith('chromium'))
.flatMap((d) => [
join(homePlaywrightBase, d, 'chrome-linux', 'chrome'),
join(homePlaywrightBase, d, 'chrome-win', 'chrome.exe'),
join(homePlaywrightBase, d, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'),
]);
for (const cacheBase of playwrightCacheBases) {
if (!existsSync(cacheBase)) {
continue;
}
const chromiumEntries = sortChromiumDirectories(
readdirSync(cacheBase).filter((d) => d.startsWith('chromium'))
);
homeChromium.push(
...chromiumEntries.flatMap((d) => [
join(cacheBase, d, 'chrome-linux', 'chrome'),
join(cacheBase, d, 'chrome-win', 'chrome.exe'),
join(cacheBase, d, 'chrome-win64', 'chrome.exe'),
join(cacheBase, d, 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'),
])
);
}
} catch {
homeChromium = [];