From deede1baa51c267ee3e1b32e1e6fa9617bb3ecbe Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Mon, 5 Aug 2024 12:57:36 -0400 Subject: [PATCH 1/2] ansi coloring for haxelib help --- client.hxml | 1 + run.n | Bin 331397 -> 334399 bytes src/haxelib/client/Main.hx | 23 +++--- src/haxelib/client/ansi/Ansi.hx | 69 ++++++++++++++++++ src/haxelib/client/ansi/AnsiColor.hx | 22 ++++++ src/haxelib/client/ansi/AnsiTextAttribute.hx | 70 +++++++++++++++++++ 6 files changed, 177 insertions(+), 8 deletions(-) create mode 100644 src/haxelib/client/ansi/Ansi.hx create mode 100644 src/haxelib/client/ansi/AnsiColor.hx create mode 100644 src/haxelib/client/ansi/AnsiTextAttribute.hx diff --git a/client.hxml b/client.hxml index e5a3ae3c..4386bdcd 100644 --- a/client.hxml +++ b/client.hxml @@ -2,5 +2,6 @@ -cp hx3compat/std -cp hx4compat/std -cp crypto/src +-cp haxe-strings/src -neko run.n -main haxelib.client.Main diff --git a/run.n b/run.n index 170f3b604a5d632ce3212b07080597272168de7f..db39bfdc87231d0dab98e5ff9e1980af2d7b02da 100644 GIT binary patch delta 61973 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�LMK5 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 delta 59393 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%0AfA&ZjI^ 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 HbK3s{g)9S9 diff --git a/src/haxelib/client/Main.hx b/src/haxelib/client/Main.hx index fc438511..305130b5 100644 --- a/src/haxelib/client/Main.hx +++ b/src/haxelib/client/Main.hx @@ -40,6 +40,7 @@ using StringTools; using Lambda; using haxelib.MetaData; using haxelib.api.RepoReformatter; +using haxelib.client.ansi.Ansi; @:structInit class CommandInfo { @@ -153,8 +154,12 @@ class Main { var maxLength = 0; inline function checkLength(line:String) - if (line.length > maxLength) - maxLength = line.length; + { + var regexp = ~/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -\]*[@-~])/g; + if (regexp.replace(line, '').length > maxLength) + maxLength = regexp.replace(line, '').length; + } + function generateLines(data:List, generate:(UsageData -> String)):Array<{usage:String, description:String}> return [ @@ -164,8 +169,8 @@ class Main { {usage: line, description: item.description}; }]; - final switchLines = generateLines(Args.generateSwitchDocs(), (flag) -> '--${flag.name}'); - final optionLines = generateLines(Args.generateOptionDocs(), (flag) -> combineAliases(flag.name, flag.aliases) + ' ${flag.parameter}'); + final switchLines = generateLines(Args.generateSwitchDocs(), (flag) -> '--${flag.name}'.fg(ORANGE).attr(INTENSITY_BOLD).reset()); + final optionLines = generateLines(Args.generateOptionDocs(), (flag) -> combineAliases(flag.name, flag.aliases).fg(ORANGE).attr(INTENSITY_BOLD).reset() + ' ${flag.parameter}'.fg(ORANGE).reset()); final categories = new Map>(); for (command in Args.generateCommandDocs()) { @@ -173,18 +178,20 @@ class Main { final categoryName = command.category.getName(); if (!categories.exists(categoryName)) categories[categoryName] = []; - categories[categoryName].push({usage: command.name, description: command.description}); + categories[categoryName].push({usage: '${command.name.fg(ORANGE).attr(INTENSITY_BOLD).reset()}', description: command.description}); } Cli.print('Haxe Library Manager $VERSION - (c)2006-2024 Haxe Foundation'); - Cli.print(" Usage: haxelib [command] [options]"); + Cli.print(' Usage: '.fg(DARK_ORANGE).attr(INTENSITY_BOLD).reset() + 'haxelib '.fg(ORANGE).attr(INTENSITY_BOLD).reset() + '[command] '.fg(ORANGE) + '[options]'.reset()); + Cli.print(''); inline function display(type:String, lines:Array<{usage:String, description:String}>) { - Cli.print(' $type'); + Cli.print(' $type'.fg(DARK_ORANGE).attr(INTENSITY_BOLD).reset()); for (line in lines) { final padded = line.usage.rpad(' ', maxLength); - Cli.print(' $padded : ${line.description}'); + Cli.print(' $padded ${line.description}'); } + Cli.print(''); } for (name => commands in categories) diff --git a/src/haxelib/client/ansi/Ansi.hx b/src/haxelib/client/ansi/Ansi.hx new file mode 100644 index 00000000..b5df84a2 --- /dev/null +++ b/src/haxelib/client/ansi/Ansi.hx @@ -0,0 +1,69 @@ +package haxelib.client.ansi; + + + /** + * https://en.wikipedia.org/wiki/ANSI_escape_code + * http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/c327.html + * http://ascii-table.com/ansi-escape-sequences.php + */ + class Ansi { + + /** + * ANSI escape sequence header + */ + public static inline final ESC = "\x1B["; + + inline + public static function reset(str:String):String + return str + ESC + "0m"; + + + /** + * sets the given text attribute + */ + inline + public static function attr(str:String, attr:AnsiTextAttribute):String + return ESC + (attr) + "m" + str; + + + /** + * set the text background color + * + *

+     * >>> Ansi.bg(RED) == "\x1B[41m"
+     * 
+ */ + inline + public static function bg(str: String, color:AnsiColor):String + return ESC + "4" + color + "m" + str; + + + /** + * Clears the screen and moves the cursor to the home position + */ + inline + public static function clearScreen():String + return ESC + "2J"; + + + /** + * Clear all characters from current position to the end of the line including the character at the current position + */ + inline + public static function clearLine():String + return ESC + "K"; + + + /** + * set the text foreground color + * + *

+     * >>> Ansi.fg(RED) == "\x1B[31m"
+     * 
+ */ + inline + public static function fg(str: String, color:AnsiColor):String + return ESC + "38;5;" + color + "m" + str; + + } + \ No newline at end of file diff --git a/src/haxelib/client/ansi/AnsiColor.hx b/src/haxelib/client/ansi/AnsiColor.hx new file mode 100644 index 00000000..dab0d059 --- /dev/null +++ b/src/haxelib/client/ansi/AnsiColor.hx @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: © Vegard IT GmbH (https://vegardit.com) and contributors + * SPDX-FileContributor: Sebastian Thomschke, Vegard IT GmbH + * SPDX-License-Identifier: Apache-2.0 + */ + package haxelib.client.ansi; + +#if (haxe_ver < 4.3) @:enum #else enum #end +abstract AnsiColor(Int) { + final BLACK = 0; + final RED = 1; + final GREEN = 2; + final YELLOW = 3; + final BLUE = 4; + final MAGENTA = 5; + final CYAN = 6; + final WHITE = 7; + final DEFAULT = 9; + final ORANGE = 216; + final DARK_ORANGE = 215; + final ORANGE_BRIGHT = 208; +} diff --git a/src/haxelib/client/ansi/AnsiTextAttribute.hx b/src/haxelib/client/ansi/AnsiTextAttribute.hx new file mode 100644 index 00000000..4c0310b7 --- /dev/null +++ b/src/haxelib/client/ansi/AnsiTextAttribute.hx @@ -0,0 +1,70 @@ +/* + * SPDX-FileCopyrightText: © Vegard IT GmbH (https://vegardit.com) and contributors + * SPDX-FileContributor: Sebastian Thomschke, Vegard IT GmbH + * SPDX-License-Identifier: Apache-2.0 + */ +package haxelib.client.ansi; + +/** + * https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes + */ +#if (haxe_ver < 4.3) @:enum #else enum #end +abstract AnsiTextAttribute(Int) { + + /** + * All colors/text-attributes off + */ + final RESET = 0; + + final INTENSITY_BOLD = 1; + + /** + * Not widely supported. + */ + final INTENSITY_FAINT = 2; + + /** + * Not widely supported. + */ + final ITALIC = 3; + + final UNDERLINE_SINGLE = 4; + + final BLINK_SLOW = 5; + + /** + * Not widely supported. + */ + final BLINK_FAST = 6; + + final NEGATIVE = 7; + + /** + * Not widely supported. + */ + final HIDDEN = 8; + + /** + * Not widely supported. + */ + final STRIKETHROUGH = 9; + + /** + * Not widely supported. + */ + final UNDERLINE_DOUBLE = 21; + + final INTENSITY_OFF = 22; + + final ITALIC_OFF = 23; + + final UNDERLINE_OFF = 24; + + final BLINK_OFF = 25; + + final NEGATIVE_OFF = 27; + + final HIDDEN_OFF = 28; + + final STRIKTHROUGH_OFF = 29; +} From 8b8512f0eba141f25df45faf863193b28dead91e Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Mon, 5 Aug 2024 14:12:26 -0400 Subject: [PATCH 2/2] removed haxestrings from client.hxml --- client.hxml | 1 - 1 file changed, 1 deletion(-) diff --git a/client.hxml b/client.hxml index 4386bdcd..e5a3ae3c 100644 --- a/client.hxml +++ b/client.hxml @@ -2,6 +2,5 @@ -cp hx3compat/std -cp hx4compat/std -cp crypto/src --cp haxe-strings/src -neko run.n -main haxelib.client.Main