diff --git a/package.json b/package.json index 145518af92..d8575e3d2f 100644 --- a/package.json +++ b/package.json @@ -75,11 +75,12 @@ "dist": "yarn run compile && electron-builder --publish onTag", "dist:dir": "yarn run dist --dir -c.compression=store -c.mac.identity=null", "download:binaries": "yarn run ts-node build/download_binaries.ts", - "build:tray-icons": "yarn run ts-node build/generate-tray-icons.ts", + "pregenerate-tray-icons": "npx swc ./scripts/generate-tray-icons.ts -o ./scripts/generate-tray-icons.mjs", + "generate-tray-icons": "node ./scripts/generate-tray-icons.mjs", "build:theme-vars": "yarn run ts-node build/build_theme_vars.ts", "lint": "PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .", "lint:fix": "yarn run lint --fix", - "postinstall": "yarn run fix-canvas-deps && yarn run compile:node-fetch", + "postinstall": "yarn run generate-tray-icons && yarn run fix-canvas-deps && yarn run compile:node-fetch", "mkdocs-serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest", "verify-docs": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict", "typedocs-extensions-api": "yarn run typedoc src/extensions/extension-api.ts", diff --git a/build/generate-tray-icons.ts b/scripts/generate-tray-icons.ts similarity index 65% rename from build/generate-tray-icons.ts rename to scripts/generate-tray-icons.ts index 3e363ad13d..e775c0d721 100644 --- a/build/generate-tray-icons.ts +++ b/scripts/generate-tray-icons.ts @@ -3,20 +3,20 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { ensureDir, readFile } from "fs-extra"; +import fsExtra from "fs-extra"; import { JSDOM } from "jsdom"; import path from "path"; import sharp from "sharp"; +const { ensureDir, readFile, move } = fsExtra; + const size = Number(process.env.OUTPUT_SIZE || "16"); const outputFolder = process.env.OUTPUT_DIR || "./static/build/tray"; const inputFile = process.env.INPUT_SVG_PATH || path.resolve(__dirname, "../src/renderer/components/icon/logo-lens.svg"); const noticeFile = process.env.NOTICE_SVG_PATH || path.resolve(__dirname, "../src/renderer/components/icon/notice.svg"); const spinnerFile = process.env.SPINNER_SVG_PATH || path.resolve(__dirname, "../src/renderer/components/icon/arrow-spinner.svg"); -async function ensureOutputFoler() { - await ensureDir(outputFolder); -} +await ensureDir(outputFolder); function getSvgStyling(colouring: "dark" | "light"): string { return ` @@ -51,6 +51,7 @@ async function generateImage(image: Buffer, size: number, namePrefix: string) { } async function generateImages(image: Buffer, size: number, name: string) { + console.log(`Generating ${size}x${size} for ${name}`) await Promise.all([ generateImage(image, size, name), generateImage(image, size*2, `${name}@2x`), @@ -103,37 +104,29 @@ async function getIconImage(system: TargetSystems, filePath: string) { return Buffer.from(root.outerHTML); } -async function generateTrayIcons() { - try { - console.log("Generating tray icon pngs"); - await ensureOutputFoler(); +try { + console.log("Generating tray icon pngs"); - const baseIconTemplateImage = await getBaseIconImage("macos"); - const baseIconImage = await getBaseIconImage("windows-or-linux"); + const baseIconTemplateImage = await getBaseIconImage("macos"); + const baseIconImage = await getBaseIconImage("windows-or-linux"); - const updateAvailableTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", noticeFile); - const updateAvailableImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", noticeFile); + const updateAvailableTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", noticeFile); + const updateAvailableImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", noticeFile); - const checkingForUpdatesTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", spinnerFile); - const checkingForUpdatesImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", spinnerFile); + const checkingForUpdatesTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", spinnerFile); + const checkingForUpdatesImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", spinnerFile); - await Promise.all([ - // Templates are for macOS only - generateImages(baseIconTemplateImage, size, "trayIconTemplate"), - generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"), - generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"), - generateImages(checkingForUpdatesTemplateImage, size, "trayIconCheckingForUpdatesTemplate"), + await generateImages(baseIconTemplateImage, size, "trayIconTemplate"), + await generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"), + await generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"), + await generateImages(checkingForUpdatesTemplateImage, size, "trayIconCheckingForUpdatesTemplate"), - // Non-templates are for windows and linux - generateImages(baseIconImage, size, "trayIcon"), - generateImages(updateAvailableImage, size, "trayIconUpdateAvailable"), - generateImages(checkingForUpdatesImage, size, "trayIconCheckingForUpdates"), - ]); + // Non-templates are for windows and linux + await generateImages(baseIconImage, size, "trayIcon"), + await generateImages(updateAvailableImage, size, "trayIconUpdateAvailable"), + await generateImages(checkingForUpdatesImage, size, "trayIconCheckingForUpdates"), - console.log("Generated all images"); - } catch (error) { - console.error(error); - } + console.log("Generated all images"); +} catch (error) { + console.error("Failed to generate images", error); } - -generateTrayIcons();