From f152c9647c01a2757d6b71ccf93eb7ab3c302dc6 Mon Sep 17 00:00:00 2001 From: priestlypython Date: Tue, 28 Oct 2025 00:39:02 -0700 Subject: [PATCH] fix(ui): Fix ASCII banner colors and add syntax display to explain mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Fixes ### 1. ASCII Banner Colors Fixed - Changed from heredoc to echo -e statements - ANSI escape codes now render properly - Cyan and yellow colors display correctly - No more literal escape codes showing Before: [0;36m ____ __ ____ (escape codes displayed as text) After: Properly colored cyan ASCII art with yellow tagline ### 2. Enhanced Explain Mode with Syntax - Added SYNOPSIS/SYNTAX section before description - Extracts syntax from man pages automatically - Shows command usage patterns clearly - Works for regular commands and shell builtins - Multiple fallbacks for robustness: 1. Man page SYNOPSIS section 2. Command --help usage line 3. Generic fallback pattern Example output: SYNTAX: grep [OPTION...] PATTERNS [FILE...] grep [OPTION...] -e PATTERNS ... [FILE...] Description: Search for text pattern in files recursively ## Testing - ✅ Banner colors display correctly - ✅ Syntax shows for tar, grep, find - ✅ Works with shell builtins (cd, echo) - ✅ Fallback patterns work when man page incomplete - ✅ No breaking changes to existing functionality Closes: UI color display issue Closes: Syntax display request --- bash-helper.sh | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/bash-helper.sh b/bash-helper.sh index 521c5a6..fde9c00 100755 --- a/bash-helper.sh +++ b/bash-helper.sh @@ -17,17 +17,15 @@ NC='\033[0m' # No Color # ASCII Banner show_banner() { - cat << "EOF" -[0;36m - ____ __ ____ __ __ - / __ )____ ______/ /_ / __ )__ ______/ /___/ /_ __ - / __ / __ `/ ___/ __ \ / __ / / / / __ / __ / / / / - / /_/ / /_/ (__ ) / / / / /_/ / /_/ / /_/ / /_/ / /_/ / -/_____/\__,_/____/_/ /_/ /_____/\__,_/\__,_/\__,_/\__, / - /____/ -[0;33m Your Intelligent CLI Assistant for Bash -[0m -EOF + echo -e "${CYAN}" + echo " ____ __ ____ __ __" + echo " / __ )____ ______/ /_ / __ )__ ______/ /___/ /_ __" + echo " / __ / __ \`/ ___/ __ \\ / __ / / / / __ / __ / / / /" + echo " / /_/ / /_/ (__ ) / / / / /_/ / /_/ / /_/ / /_/ / /_/ /" + echo "/_____/\\__,_/____/_/ /_/ /_____/\\__,_/\\__,_/\\__,_/\\__, /" + echo " /____/" + echo -e "${YELLOW} Your Intelligent CLI Assistant for Bash${NC}" + echo "" } show_help() { @@ -406,6 +404,36 @@ mode_explain() { echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}" echo "" + # Get syntax from man page SYNOPSIS section + if command -v "$base_cmd" &> /dev/null || type "$base_cmd" 2>/dev/null | grep -q "shell builtin"; then + echo -e "${CYAN}${BOLD}SYNTAX:${NC}" + + if type "$base_cmd" 2>/dev/null | grep -q "shell builtin"; then + # For builtins, get the first line of help + local syntax=$(help "$base_cmd" 2>/dev/null | head -1 | sed 's/^[[:space:]]*//') + if [ -n "$syntax" ]; then + echo -e " ${GREEN}$syntax${NC}" + else + echo -e " ${GREEN}$base_cmd [options]${NC}" + fi + else + # For regular commands, extract SYNOPSIS section from man page + local synopsis=$(man "$base_cmd" 2>/dev/null | col -b | sed -n '/^SYNOPSIS/,/^DESCRIPTION/p' | head -15 | tail -n +2 | head -n -1 | sed 's/^[[:space:]]*/ /') + if [ -n "$synopsis" ]; then + echo -e "${GREEN}$synopsis${NC}" + else + # Fallback: try to get usage from command itself + local usage=$("$base_cmd" --help 2>&1 | grep -i "usage" | head -1 | sed 's/^[Uu]sage: / /') + if [ -n "$usage" ]; then + echo -e " ${GREEN}$usage${NC}" + else + echo -e " ${GREEN}$base_cmd [options]${NC}" + fi + fi + fi + echo "" + fi + # Try to find in database local found_in_db=false if check_jq && check_database; then