bin/ 230 CLI tools (ask-*, br-*, agent-*, roadid, carpool) scripts/ 99 automation scripts fleet/ Node configs and deployment workers/ Cloudflare Worker sources (roadpay, road-search, squad webhooks) roadc/ RoadC programming language roadnet/ Mesh network (5 APs, WireGuard) operator/ Memory system scripts config/ System configs dotfiles/ Shell configs docs/ Documentation BlackRoad OS — Pave Tomorrow. RoadChain-SHA2048: d1a24f55318d338b RoadChain-Identity: alexa@sovereign RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
217 lines
5.6 KiB
Bash
Executable File
217 lines
5.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ============================================================================
|
|
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
|
|
# Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved.
|
|
#
|
|
# This code is the intellectual property of BlackRoad OS, Inc.
|
|
# AI-assisted development does not transfer ownership to AI providers.
|
|
# Unauthorized use, copying, or distribution is prohibited.
|
|
# NOT licensed for AI training or data extraction.
|
|
# ============================================================================
|
|
# BlackRoad Web Renderer - Render web pages and HTML in terminal
|
|
# Usage: br-web-render <url|file>
|
|
# br-web-render --serve <html-file>
|
|
# br-web-render --live <url>
|
|
|
|
# Color functions (using printf for proper escape handling)
|
|
c_pink() { printf '\033[38;5;205m'; }
|
|
c_blue() { printf '\033[38;5;75m'; }
|
|
c_orange() { printf '\033[38;5;208m'; }
|
|
c_gray() { printf '\033[38;5;240m'; }
|
|
c_reset() { printf '\033[0m'; }
|
|
|
|
# ==================
|
|
# RENDERER DETECTION
|
|
# ==================
|
|
|
|
detect_renderer() {
|
|
if command -v w3m >/dev/null 2>&1; then
|
|
echo "w3m"
|
|
elif command -v lynx >/dev/null 2>&1; then
|
|
echo "lynx"
|
|
elif command -v curl >/dev/null 2>&1; then
|
|
echo "curl"
|
|
else
|
|
echo "none"
|
|
fi
|
|
}
|
|
|
|
# ==================
|
|
# RENDER FUNCTIONS
|
|
# ==================
|
|
|
|
render_url() {
|
|
local url="$1"
|
|
local renderer="$2"
|
|
|
|
c_blue; printf "🌐 Rendering: "; c_reset; printf "%s\n" "$url"
|
|
c_gray; printf "Renderer: %s\n\n" "$renderer"; c_reset
|
|
|
|
case "$renderer" in
|
|
w3m)
|
|
w3m -dump "$url"
|
|
;;
|
|
lynx)
|
|
lynx -dump -nolist "$url"
|
|
;;
|
|
curl)
|
|
curl -sL "$url" | sed 's/<[^>]*>//g' | sed '/^$/d'
|
|
;;
|
|
*)
|
|
c_orange; printf "❌ No renderer available\n"; c_reset
|
|
printf "Install one of: w3m, lynx, curl\n"
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
render_file() {
|
|
local file="$1"
|
|
local renderer="$2"
|
|
|
|
if [[ ! -f "$file" ]]; then
|
|
c_orange; printf "❌ File not found: %s\n" "$file"; c_reset
|
|
return 1
|
|
fi
|
|
|
|
c_blue; printf "📄 Rendering: "; c_reset; printf "%s\n" "$file"
|
|
c_gray; printf "Renderer: %s\n\n" "$renderer"; c_reset
|
|
|
|
case "$renderer" in
|
|
w3m)
|
|
w3m -dump "$file"
|
|
;;
|
|
lynx)
|
|
lynx -dump -nolist "$file"
|
|
;;
|
|
*)
|
|
# Fallback: strip HTML tags
|
|
sed 's/<[^>]*>//g' "$file" | sed '/^$/d'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# ==================
|
|
# LIVE MODE
|
|
# ==================
|
|
|
|
render_live() {
|
|
local url="$1"
|
|
local interval="${2:-5}"
|
|
local renderer=$(detect_renderer)
|
|
|
|
c_pink; printf "═══ LIVE MODE ═══\n"; c_reset
|
|
c_gray; printf "URL: %s\n" "$url"
|
|
printf "Refresh: %ss\n" "$interval"
|
|
printf "Press Ctrl+C to exit\n\n"; c_reset
|
|
|
|
while true; do
|
|
clear
|
|
render_url "$url" "$renderer"
|
|
c_gray; printf "\n─────────────────────────\n"; c_reset
|
|
c_gray; printf "Updated: %s\n" "$(date)"; c_reset
|
|
sleep "$interval"
|
|
done
|
|
}
|
|
|
|
# ==================
|
|
# SERVE MODE
|
|
# ==================
|
|
|
|
serve_html() {
|
|
local file="$1"
|
|
local renderer=$(detect_renderer)
|
|
|
|
if [[ ! -f "$file" ]]; then
|
|
c_orange; printf "❌ File not found: %s\n" "$file"; c_reset
|
|
return 1
|
|
fi
|
|
|
|
c_pink; printf "═══ SERVE MODE ═══\n"; c_reset
|
|
c_gray; printf "File: %s\n" "$file"
|
|
printf "Press 'r' to refresh, 'q' to quit\n\n"; c_reset
|
|
|
|
while true; do
|
|
render_file "$file" "$renderer"
|
|
|
|
c_gray; printf "\n─────────────────────────\n"; c_reset
|
|
read -rsn1 -p "Command (r=refresh, q=quit): " key
|
|
printf "\n"
|
|
|
|
case "$key" in
|
|
r|R)
|
|
clear
|
|
;;
|
|
q|Q)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# ==================
|
|
# MAIN CLI
|
|
# ==================
|
|
|
|
main() {
|
|
local arg="${1:-}"
|
|
|
|
if [[ -z "$arg" ]]; then
|
|
cat <<'HELP'
|
|
BlackRoad Web Renderer - Render web pages in terminal
|
|
|
|
USAGE:
|
|
br-web-render <url> Render URL once
|
|
br-web-render <file.html> Render HTML file
|
|
br-web-render --live <url> [sec] Auto-refresh every N seconds
|
|
br-web-render --serve <file> Serve HTML with refresh option
|
|
br-web-render --help Show this help
|
|
|
|
EXAMPLES:
|
|
br-web-render https://github.com
|
|
br-web-render ~/index.html
|
|
br-web-render --live https://blackroad.io 10
|
|
br-web-render --serve ~/dashboard.html
|
|
|
|
RENDERERS (in order of preference):
|
|
1. w3m - Best terminal browser (recommended)
|
|
2. lynx - Classic terminal browser
|
|
3. curl - Basic HTML stripping fallback
|
|
|
|
INSTALL:
|
|
brew install w3m # macOS
|
|
apt install w3m # Debian/Ubuntu
|
|
dnf install w3m # Fedora
|
|
HELP
|
|
return 0
|
|
fi
|
|
|
|
local renderer=$(detect_renderer)
|
|
|
|
case "$arg" in
|
|
--live|-l)
|
|
render_live "${2:-}" "${3:-5}"
|
|
;;
|
|
--serve|-s)
|
|
serve_html "${2:-}"
|
|
;;
|
|
--help|-h)
|
|
main ""
|
|
;;
|
|
http://*|https://*)
|
|
render_url "$arg" "$renderer"
|
|
;;
|
|
*)
|
|
if [[ -f "$arg" ]]; then
|
|
render_file "$arg" "$renderer"
|
|
else
|
|
c_orange; printf "❌ Invalid input: %s\n" "$arg"; c_reset
|
|
printf "Use --help for usage\n"
|
|
return 1
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main "$@"
|