From 2e1e0f4e11ae98da8b726721519f23c3b1171171 Mon Sep 17 00:00:00 2001 From: Suyashtnt Date: Thu, 6 Jun 2024 20:18:12 +0200 Subject: [PATCH] feat: add windows terminal --- .zed/settings.json | 10 ++++++++++ build.ts | 20 ++++++++++++++------ build/windows-terminal.json | 23 +++++++++++++++++++++++ exporters/mod.ts | 3 ++- exporters/vscode.ts | 25 ++++++++++++++----------- exporters/windowsTerminal.ts | 21 +++++++++++++++++++++ templates/windowsTerminal.mustache | 23 +++++++++++++++++++++++ 7 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 .zed/settings.json create mode 100644 build/windows-terminal.json create mode 100644 exporters/windowsTerminal.ts create mode 100644 templates/windowsTerminal.mustache diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..e38aa8c --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,10 @@ +{ + "languages": { + "TypeScript": { + "language_servers": ["deno", "!typescript-language-server", "!eslint"] + }, + "TSX": { + "language_servers": ["deno", "!typescript-language-server", "!eslint"] + } + } +} diff --git a/build.ts b/build.ts index 19d5a2a..c1e59df 100644 --- a/build.ts +++ b/build.ts @@ -1,6 +1,11 @@ -import { darkTheme, toHex, toVscodeTheme } from "./mod.ts" -import * as YAML from "yaml" - +import { + darkTheme, + toHex, + toVscodeTheme, + toWindowsTerminalTheme, +} from "./mod.ts"; +import * as YAML from "yaml"; + const dark = toHex(darkTheme); // export dark.json @@ -11,6 +16,10 @@ await Deno.writeTextFile("build/dark.json", darkJson); const darkYaml = YAML.stringify(dark); await Deno.writeTextFile("build/dark-base16.yaml", darkYaml); +// export windows-terminal.json +const windowsTerminal = await toWindowsTerminalTheme(darkTheme); +await Deno.writeTextFile("build/windows-terminal.json", windowsTerminal); + // export vscode const vscode = await toVscodeTheme(darkTheme); await Deno.writeTextFile("build/vscode/theme.json", vscode); @@ -18,9 +27,8 @@ await Deno.writeTextFile("build/vscode/theme.json", vscode); await Deno.copyFile("LICENSE", "build/vscode/LICENSE"); // and package const packageOutput = await new Deno.Command("vsce", { - args: ["package"], - cwd: "build/vscode" + args: ["package"], + cwd: "build/vscode", }).output(); console.log(new TextDecoder().decode(packageOutput.stdout)); console.error(new TextDecoder().decode(packageOutput.stderr)); - diff --git a/build/windows-terminal.json b/build/windows-terminal.json new file mode 100644 index 0000000..0542296 --- /dev/null +++ b/build/windows-terminal.json @@ -0,0 +1,23 @@ +{ + "name": "Kleur", + "foreground": "#dadbf8", + "background": "#060613", + "cursorColor": "#dadbf8", + "selectionBackground": "#141327", + "black": "#060613", + "red": "#e6443d", + "green": "#11d770", + "yellow": "#f1a400", + "blue": "#00c0ff", + "purple": "#a89dff", + "cyan": "#00dad0", + "white": "#dadbf8", + "brightBlack": "#2b2b41", + "brightRed": "#e6443d", + "brightGreen": "#11d770", + "brightYellow": "#f1a400", + "brightBlue": "#00c0ff", + "brightPurple": "#a89dff", + "brightCyan": "#00dad0", + "brightWhite": "#a89dff" +} diff --git a/exporters/mod.ts b/exporters/mod.ts index 6b8126a..a05d9e6 100644 --- a/exporters/mod.ts +++ b/exporters/mod.ts @@ -1,4 +1,5 @@ export * from "./css.ts"; export * from "./base16.ts"; export * from "./hex.ts"; -export * from "./vscode.ts"; \ No newline at end of file +export * from "./vscode.ts"; +export * from "./windowsTerminal.ts"; diff --git a/exporters/vscode.ts b/exporters/vscode.ts index 84af6f4..b95c8ca 100644 --- a/exporters/vscode.ts +++ b/exporters/vscode.ts @@ -1,16 +1,19 @@ -import { render } from 'mustache' +import { render } from "mustache"; import { HumanPalette } from "../palletes.ts"; import { toHex } from "./hex.ts"; export const toVscodeTheme = async (pallete: HumanPalette) => { - const hex = toHex(pallete) - const template = await Deno.readTextFile('templates/vscode.mustache') - const theme = Object.fromEntries( - Object.entries(hex).map(([key, value]) => [key + '-hex', value.replace?.("#", "")]) - ) + const hex = toHex(pallete); + const template = await Deno.readTextFile("templates/vscode.mustache"); + const theme = Object.fromEntries( + Object.entries(hex).map(([key, value]) => [ + key + "-hex", + value.replace?.("#", ""), + ]), + ); - return render(template, { - 'scheme-name': "Kleur", - ...theme - }) -} + return render(template, { + "scheme-name": "Kleur", + ...theme, + }); +}; diff --git a/exporters/windowsTerminal.ts b/exporters/windowsTerminal.ts new file mode 100644 index 0000000..eb32d9f --- /dev/null +++ b/exporters/windowsTerminal.ts @@ -0,0 +1,21 @@ +import { render } from "mustache"; +import { HumanPalette } from "../palletes.ts"; +import { toHex } from "./hex.ts"; + +export const toWindowsTerminalTheme = async (pallete: HumanPalette) => { + const hex = toHex(pallete); + const template = await Deno.readTextFile( + "templates/windowsTerminal.mustache", + ); + const theme = Object.fromEntries( + Object.entries(hex).map(([key, value]) => [ + key + "-hex", + value.replace?.("#", ""), + ]), + ); + + return render(template, { + "scheme-name": "Kleur", + ...theme, + }); +}; diff --git a/templates/windowsTerminal.mustache b/templates/windowsTerminal.mustache new file mode 100644 index 0000000..ce042c0 --- /dev/null +++ b/templates/windowsTerminal.mustache @@ -0,0 +1,23 @@ +{ + "name": "{{scheme-name}}", + "foreground": "#{{base05-hex}}", + "background": "#{{base00-hex}}", + "cursorColor": "#{{base05-hex}}", + "selectionBackground": "#{{base02-hex}}", + "black": "#{{base00-hex}}", + "red": "#{{red-hex}}", + "green": "#{{green-hex}}", + "yellow": "#{{orange-hex}}", + "blue": "#{{blue-hex}}", + "purple": "#{{mauve-hex}}", + "cyan": "#{{teal-hex}}", + "white": "#{{base05-hex}}", + "brightBlack": "#{{base03-hex}}", + "brightRed": "#{{red-hex}}", + "brightGreen": "#{{green-hex}}", + "brightYellow": "#{{orange-hex}}", + "brightBlue": "#{{blue-hex}}", + "brightPurple": "#{{mauve-hex}}", + "brightCyan": "#{{teal-hex}}", + "brightWhite": "#{{base07-hex}}" +}