|
|
@@ -1,13 +1,7 @@
|
|
|
import { EOL } from "os"
|
|
|
import { Schema } from "effect"
|
|
|
-import { logo as glyphs } from "./logo"
|
|
|
|
|
|
-const wordmark = [
|
|
|
- `⠀ ▄ `,
|
|
|
- `██▀▄ █▀▀█ █▀▀▄ █▀▀█ █▀▀▄ █▀▀█ █▀▀█ █▀▀▄ █▀▀█`,
|
|
|
- `█▀ █ █ █ █▄▄▀ █ █ █▀ █ █ █ █ █ █ █▀▀▀`,
|
|
|
- `█▀ █ █▀▀▀ █ █ █▀▀▀ █▀ █ █ █▀▀▀ █▀▀▀ ▀▀▀▀`,
|
|
|
-]
|
|
|
+const wordmark = `K I R I N C O D E`
|
|
|
|
|
|
export class CancelledError extends Schema.TaggedErrorClass<CancelledError>()("UICancelledError", {}) {}
|
|
|
|
|
|
@@ -46,61 +40,9 @@ export function empty() {
|
|
|
}
|
|
|
|
|
|
export function logo(pad?: string) {
|
|
|
- if (!process.stdout.isTTY && !process.stderr.isTTY) {
|
|
|
- const result = []
|
|
|
- for (const row of wordmark) {
|
|
|
- if (pad) result.push(pad)
|
|
|
- result.push(row)
|
|
|
- result.push(EOL)
|
|
|
- }
|
|
|
- return result.join("").trimEnd()
|
|
|
- }
|
|
|
-
|
|
|
- const result: string[] = []
|
|
|
- const reset = "\x1b[0m"
|
|
|
- const left = {
|
|
|
- fg: "\x1b[90m",
|
|
|
- shadow: "\x1b[38;5;235m",
|
|
|
- bg: "\x1b[48;5;235m",
|
|
|
- }
|
|
|
- const right = {
|
|
|
- fg: reset,
|
|
|
- shadow: "\x1b[38;5;238m",
|
|
|
- bg: "\x1b[48;5;238m",
|
|
|
- }
|
|
|
- const gap = " "
|
|
|
- const draw = (line: string, fg: string, shadow: string, bg: string) => {
|
|
|
- const parts: string[] = []
|
|
|
- for (const char of line) {
|
|
|
- if (char === "_") {
|
|
|
- parts.push(bg, " ", reset)
|
|
|
- continue
|
|
|
- }
|
|
|
- if (char === "^") {
|
|
|
- parts.push(fg, bg, "▀", reset)
|
|
|
- continue
|
|
|
- }
|
|
|
- if (char === "~") {
|
|
|
- parts.push(shadow, "▀", reset)
|
|
|
- continue
|
|
|
- }
|
|
|
- if (char === " ") {
|
|
|
- parts.push(" ")
|
|
|
- continue
|
|
|
- }
|
|
|
- parts.push(fg, char, reset)
|
|
|
- }
|
|
|
- return parts.join("")
|
|
|
- }
|
|
|
- glyphs.left.forEach((row, index) => {
|
|
|
- if (pad) result.push(pad)
|
|
|
- result.push(draw(row, left.fg, left.shadow, left.bg))
|
|
|
- result.push(gap)
|
|
|
- const other = glyphs.right[index] ?? ""
|
|
|
- result.push(draw(other, right.fg, right.shadow, right.bg))
|
|
|
- result.push(EOL)
|
|
|
- })
|
|
|
- return result.join("").trimEnd()
|
|
|
+ const label = `${Style.TEXT_HIGHLIGHT_BOLD}${wordmark}${Style.TEXT_NORMAL}`
|
|
|
+ if (pad) return `${pad}${label}`
|
|
|
+ return label
|
|
|
}
|
|
|
|
|
|
export async function input(prompt: string): Promise<string> {
|