fix(ui): Fix ASCII banner colors and add syntax display to explain mode
## 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
This commit is contained in:
+39
-11
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user