chore: 整理 third-party Dark Reader 目录并移除本地说明文件跟踪
This commit is contained in:
+117
@@ -0,0 +1,117 @@
|
||||
// @ts-check
|
||||
import {exec} from 'node:child_process';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import * as url from 'url';
|
||||
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
||||
|
||||
/**
|
||||
* @param {string} relPath
|
||||
* @returns {string}
|
||||
*/
|
||||
function winProgramFiles(relPath) {
|
||||
const x64Path = path.join(process.env.PROGRAMFILES, relPath);
|
||||
if (fs.existsSync(x64Path)) {
|
||||
return x64Path;
|
||||
}
|
||||
return path.join(process.env['ProgramFiles(x86)'], relPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} app
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
function linuxAppPath(app) {
|
||||
return new Promise((resolve, reject) => {
|
||||
exec(`which ${app}`, (err, result) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(result.trim());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
export async function getChromePath() {
|
||||
if (process.platform === 'darwin') {
|
||||
return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
return winProgramFiles('Google\\Chrome\\Application\\chrome.exe');
|
||||
}
|
||||
const possibleLinuxPaths = ['google-chrome', 'google-chrome-stable', 'chromium'];
|
||||
for (const possiblePath of possibleLinuxPaths) {
|
||||
try {
|
||||
return await linuxAppPath(possiblePath);
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
throw new Error('Could not find Chrome');
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
export async function getEdgePath() {
|
||||
if (process.platform === 'darwin') {
|
||||
return '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge';
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
return winProgramFiles('Microsoft\\Edge\\Application\\msedge.exe');
|
||||
}
|
||||
const possibleLinuxPaths = ['microsoft-edge', 'microsoft-edge-stable'];
|
||||
for (const possiblePath of possibleLinuxPaths) {
|
||||
try {
|
||||
return await linuxAppPath(possiblePath);
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
throw new Error('Could not find Edge');
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
export async function getFirefoxPath() {
|
||||
if (process.platform === 'darwin') {
|
||||
return '/Applications/Firefox Nightly.app/Contents/MacOS/firefox';
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
return await winProgramFiles('Firefox Nightly\\firefox.exe');
|
||||
}
|
||||
const possibleLinuxPaths = ['firefox-nightly', 'firefox'];
|
||||
for (const possiblePath of possibleLinuxPaths) {
|
||||
try {
|
||||
// snap profile folders do not get loaded
|
||||
const option = await linuxAppPath(possiblePath);
|
||||
// Firefox snap can not access the regular system-wide temporary directory,
|
||||
// so we create a separate one within build folder
|
||||
// See also: https://github.com/mozilla/web-ext/issues/1696
|
||||
if (!option.includes('/snap/')) {
|
||||
return option;
|
||||
}
|
||||
const firefoxProfile = './build/firefox-profile-for-testing';
|
||||
process.env.TMPDIR = firefoxProfile;
|
||||
try {
|
||||
fs.mkdirSync(firefoxProfile);
|
||||
} catch (e) {
|
||||
// Do nothing
|
||||
}
|
||||
return option;
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
throw new Error('Could not find firefox-nightly');
|
||||
}
|
||||
|
||||
export const chromeExtensionDebugDir = path.join(__dirname, '../../build/debug/chrome');
|
||||
export const chromePlusExtensionDebugDir = path.join(__dirname, '../../build/debug/chrome-plus');
|
||||
export const chromeMV3ExtensionDebugDir = path.join(__dirname, '../../build/debug/chrome-mv3');
|
||||
export const firefoxExtensionDebugDir = path.join(__dirname, '../../build/debug/firefox');
|
||||
Reference in New Issue
Block a user