1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Generate tray icons before installing canvas

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-11-18 16:19:25 -05:00
parent e9e248e32c
commit 71ad8e1d52
2 changed files with 27 additions and 33 deletions

View File

@ -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",

View File

@ -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();