mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-06-03 06:31:13 +08:00
add chrome for puppeteer downloader
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
"start": "electron-vite preview",
|
||||
"dev": "electron-vite dev",
|
||||
"dev:geek-auto-start-chat-with-boss-only": "MAIN_BOSSGEEKGO_UI_RUN_MODE=geekAutoStartWithBoss electron-vite dev",
|
||||
"dev:check-and-download-dependencies-for-init-only": "MAIN_BOSSGEEKGO_UI_RUN_MODE=checkAndDownloadDependenciesForInit electron-vite dev",
|
||||
"build": "electron-vite build",
|
||||
"format": "prettier --write .",
|
||||
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts,.vue --fix",
|
||||
@@ -21,10 +22,11 @@
|
||||
"build:linux": "npm run build && electron-builder --linux"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bossgeekgo/geek-auto-start-chat-with-boss": "workspace:*",
|
||||
"@bossgeekgo/dingtalk-plugin": "workspace:*",
|
||||
"@bossgeekgo/geek-auto-start-chat-with-boss": "workspace:*",
|
||||
"@electron-toolkit/preload": "^3.0.0",
|
||||
"@electron-toolkit/utils": "^3.0.0",
|
||||
"@puppeteer/browsers": "^2.0.0",
|
||||
"electron-updater": "^6.1.7",
|
||||
"element-plus": "^2.5.5",
|
||||
"normalize.css": "^8.0.1",
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import * as path from 'node:path'
|
||||
import * as os from 'node:os'
|
||||
import * as fs from 'node:fs'
|
||||
import type { InstalledBrowser } from '@puppeteer/browsers'
|
||||
|
||||
const expectBuildId = process.env.EXPECT_CHROME_FOR_PUPPETEER_BUILD_ID || '121.0.6167.85'
|
||||
const cacheDir = path.join(
|
||||
os.homedir(),
|
||||
'.bossgeekgo',
|
||||
'external-node-runtime-dependencies',
|
||||
'static'
|
||||
)
|
||||
|
||||
const checkAndDownloadPuppeteer = async (options: {
|
||||
downloadProgressCallback?: (downloadedBytes: number, totalBytes: number) => void
|
||||
}) => {
|
||||
const puppeteerManager = await import('@puppeteer/browsers')
|
||||
const executablePath = puppeteerManager.computeExecutablePath({
|
||||
browser: puppeteerManager.Browser.CHROME,
|
||||
cacheDir,
|
||||
buildId: expectBuildId
|
||||
})
|
||||
let installedBrowser: InstalledBrowser
|
||||
if (!fs.existsSync(executablePath)) {
|
||||
// maybe the exist installation is broken.
|
||||
await puppeteerManager.uninstall({
|
||||
cacheDir,
|
||||
buildId: expectBuildId,
|
||||
browser: puppeteerManager.Browser.CHROME,
|
||||
})
|
||||
installedBrowser = await puppeteerManager.install({
|
||||
browser: puppeteerManager.Browser.CHROME,
|
||||
cacheDir,
|
||||
buildId: expectBuildId,
|
||||
downloadProgressCallback: options.downloadProgressCallback
|
||||
})
|
||||
} else {
|
||||
installedBrowser = (
|
||||
await puppeteerManager.getInstalledBrowsers({
|
||||
cacheDir
|
||||
})
|
||||
).find((it) => it.buildId === expectBuildId)!
|
||||
}
|
||||
|
||||
return installedBrowser
|
||||
}
|
||||
|
||||
export default checkAndDownloadPuppeteer
|
||||
@@ -0,0 +1,11 @@
|
||||
import checkAndDownloadPuppeteer from './check-and-download-puppeteer'
|
||||
|
||||
export const checkAndDownloadDependenciesForInit = async () => {
|
||||
const browser = await checkAndDownloadPuppeteer({
|
||||
downloadProgressCallback(downloadedBytes: number, totalBytes: number) {
|
||||
console.log(`${downloadedBytes} / ${totalBytes}`)
|
||||
}
|
||||
})
|
||||
|
||||
console.log(browser)
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { runAutoChat } from './flow/GEEK_AUTO_START_CHAT_WITH_BOSS'
|
||||
import { openSettingWindow } from './flow/OPEN_SETTING_WINDOW'
|
||||
import { checkAndDownloadDependenciesForInit } from './flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/index';
|
||||
|
||||
const runMode = process.env.MAIN_BOSSGEEKGO_UI_RUN_MODE
|
||||
switch (runMode) {
|
||||
@@ -7,6 +8,10 @@ switch (runMode) {
|
||||
runAutoChat()
|
||||
break
|
||||
}
|
||||
case 'checkAndDownloadDependenciesForInit': {
|
||||
checkAndDownloadDependenciesForInit()
|
||||
break
|
||||
}
|
||||
default: {
|
||||
openSettingWindow()
|
||||
break
|
||||
|
||||
@@ -96,6 +96,7 @@ export function createMainWindow(): void {
|
||||
env: {
|
||||
...process.env,
|
||||
MAIN_BOSSGEEKGO_UI_RUN_MODE: 'geekAutoStartWithBoss'
|
||||
// PUPPETEER_EXECUTABLE_PATH: '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge'
|
||||
}
|
||||
})
|
||||
ipcMain.emit('geek-auto-start-chat-with-boss-started')
|
||||
|
||||
28
pnpm-lock.yaml
generated
28
pnpm-lock.yaml
generated
@@ -61,6 +61,9 @@ importers:
|
||||
'@electron-toolkit/utils':
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0(electron@28.2.0)
|
||||
'@puppeteer/browsers':
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
electron-updater:
|
||||
specifier: ^6.1.7
|
||||
version: 6.1.7
|
||||
@@ -890,6 +893,22 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@puppeteer/browsers@2.0.0:
|
||||
resolution: {integrity: sha512-3PS82/5+tnpEaUWonjAFFvlf35QHF15xqyGd34GBa5oP5EPVfFXRsbSxIGYf1M+vZlqBZ3oxT1kRg9OYhtt8ng==}
|
||||
engines: {node: '>=18'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
extract-zip: 2.0.1
|
||||
progress: 2.0.3
|
||||
proxy-agent: 6.3.1
|
||||
tar-fs: 3.0.4
|
||||
unbzip2-stream: 1.4.3
|
||||
yargs: 17.7.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@rollup/pluginutils@5.1.0:
|
||||
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -1045,7 +1064,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/http-cache-semantics': 4.0.4
|
||||
'@types/keyv': 3.1.4
|
||||
'@types/node': 18.19.9
|
||||
'@types/node': 18.19.15
|
||||
'@types/responselike': 1.0.3
|
||||
|
||||
/@types/debug@4.1.12:
|
||||
@@ -1073,7 +1092,7 @@ packages:
|
||||
/@types/keyv@3.1.4:
|
||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||
dependencies:
|
||||
'@types/node': 18.19.9
|
||||
'@types/node': 18.19.15
|
||||
|
||||
/@types/lodash-es@4.17.12:
|
||||
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
||||
@@ -1092,7 +1111,6 @@ packages:
|
||||
resolution: {integrity: sha512-AMZ2UWx+woHNfM11PyAEQmfSxi05jm9OlkxczuHeEqmvwPkYj6MWv44gbzDPefYOLysTOFyI3ziiy2ONmUZfpA==}
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
optional: true
|
||||
|
||||
/@types/node@18.19.9:
|
||||
resolution: {integrity: sha512-oZFKlC8l5YtzGQNT4zC2PiSSKzQVZ8bAwwd+EYdPLtyk0nSEq6O16SkK+rkkT2eflDAbormJgEF3QnH3oDrTSw==}
|
||||
@@ -1102,7 +1120,7 @@ packages:
|
||||
/@types/plist@3.0.5:
|
||||
resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
|
||||
dependencies:
|
||||
'@types/node': 18.19.9
|
||||
'@types/node': 18.19.15
|
||||
xmlbuilder: 15.1.1
|
||||
dev: true
|
||||
optional: true
|
||||
@@ -1110,7 +1128,7 @@ packages:
|
||||
/@types/responselike@1.0.3:
|
||||
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
|
||||
dependencies:
|
||||
'@types/node': 18.19.9
|
||||
'@types/node': 18.19.15
|
||||
|
||||
/@types/semver@7.5.6:
|
||||
resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
|
||||
|
||||
Reference in New Issue
Block a user