Cybersecurity-Projects/PROJECTS/intermediate/secrets-scanner/internal/ui/banner.go

105 lines
4.1 KiB
Go

/*
©AngelaMos | 2026
banner.go
ASCII art banner renderer with optional anime art decoration
Defines the "portia" ASCII wordmark and an optional decorative block-art panel.
PrintBanner renders just the wordmark with a subtitle rule; PrintBannerWithArt
adds the full art block beneath it. Banner and art lines cycle through color
arrays for alternating red/blue styling.
Key exports:
PrintBanner - wordmark banner for subcommand help pages and scan start
PrintBannerWithArt - full banner with decorative art for root help
Connects to:
ui/color.go - uses Red, Blue, White, WhiteItalic, HiWhite for styling
ui/symbol.go - uses HRule for the divider line
cli/root.go - calls PrintBannerWithArt for root help, PrintBanner for subcommands
cli/scan.go, cli/git.go - call PrintBanner at scan start
*/
package ui
import "fmt"
var portiaBanner = []string{
" ",
"░░░░░░ ░░░░░░ ░░░░░░ ░░░░░░░░ ░░ ░░░░░ ",
"▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ",
"▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒ ▒▒▒▒▒▒▒ ",
"▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ",
"██ ██████ ██ ██ ██ ██ ██ ██ ",
"",
}
var bannerColors = []func(a ...any) string{
Red,
Blue,
Red,
Blue,
Red,
}
var animeArt = []string{
"⣿⣿⣿⣿⣿⣷⣿⣿⣿⡅⡹⢿⠆⠙⠋⠉⠻⠿⣿⣿⣿⣿⣿⣿⣮⠻⣦⡙⢷⡑⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣌⠡⠌⠂⣙⠻⣛⠻⠷⠐⠈⠛⢱⣮⣷⣽⣿",
"⣿⣿⣿⣿⡇⢿⢹⣿⣶⠐⠁⠀⣀⣠⣤⠄⠀⠀⠈⠙⠻⣿⣿⣿⣦⣵⣌⠻⣷⢝⠦⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣻⣿⣊⡃⠀⣙⠿⣿⣿⣿⣎⢮⡀⢮⣽⣿⣿",
"⢿⣿⣿⣿⣧⡸⡎⡛⡩⠖⠀⣴⣿⣿⣿⠀⠀⠀⠀⠸⠇⠀⠙⢿⣿⣿⣿⣷⣌⢷⣑⢷⣄⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣫⠶⠛⠉⠀⠁⠀⠈⠈⠀⠠⠜⠻⣿⣆⢿⣼⣿⣿⣿",
"⢐⣿⣿⣿⣿⣧⢧⣧⢻⣦⢀⣹⣿⣿⣿⣇⠀⠄⠀⠀⠀⡀⠀⠈⢻⣿⣿⣿⣿⣷⣝⢦⡹⠷⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⠈⠁⠀⠀⠀⠁⠀⠀⠀⠱⣶⣄⡀⠀⠈⠛⠜⣿⣿⣿⣿",
"⠀⠊⢫⣿⣏⣿⡌⣼⣄⢫⡌⣿⣿⣿⣿⣿⣦⡈⠲⣄⣤⣤⡡⢀⣠⣿⣿⣿⣿⣿⣿⣷⣼⣍⢬⣦⡙⣿⣿⣿⣿⣿⣯⢁⡄⠀⡀⡀⠀⠄⢈⣠⢪⠀⣿⣿⣿⣦⠀⢉⢂⠹⡿⣿⣿",
"⠀⠀⠄⢹⢃⢻⣟⠙⣿⣦⠱⢻⣿⣿⣿⣿⣿⣿⣷⣬⣍⣭⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡙⢿⣼⡿⣿⣿⣿⣿⣿⣷⣄⠘⣱⢦⣤⡴⡿⢈⣼⣿⣿⣿⣇⣴⣶⣮⣅⢻⣿⡏",
"⠀⠀⠈⠹⣇⢡⢿⡆⠻⣿⣷⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣍⡻⣿⣟⣻⣿⣿⣿⣿⣷⣦⣥⣬⣤⣴⣾⣿⣿⣿⣿⣷⣿⣿⣿⣿⣷⡜⠃",
"⠀⠀⠀⢀⣘⠈⢂⠃⣧⡹⣿⣷⡄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣅⡙⢿⣟⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⡕⠂",
"⠀⠀⠀⠀⠀⠀⠛⢷⣜⢷⡌⠻⣿⣿⣦⣝⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣹⣷⣦⣹⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠉⠃⠀",
}
var artColors = []func(a ...any) string{
Blue,
Blue,
Blue,
Red,
Red,
Red,
Blue,
Blue,
Blue,
}
func PrintBanner() {
fmt.Println()
fmt.Println()
for i, line := range portiaBanner {
c := bannerColors[i%len(bannerColors)]
fmt.Printf(" %s\n", c(line))
}
fmt.Printf(" %s\n", HiWhite(HRule(52)))
fmt.Printf(
" %s\n\n",
WhiteItalic(
"Secrets scanner for git repos and config files",
),
)
}
func PrintBannerWithArt() {
fmt.Println()
for i, line := range portiaBanner {
c := bannerColors[i%len(bannerColors)]
fmt.Printf(" %s\n", c(line))
}
fmt.Printf(" %s\n", White(HRule(64)))
fmt.Printf(
" %s\n",
WhiteItalic(
"Secrets scanner for git repos and config files",
),
)
fmt.Println()
for i, line := range animeArt {
c := artColors[i%len(artColors)]
fmt.Printf(" %s\n", c(line))
}
fmt.Println()
}