Files
CyberStrikeAI/internal/termout/startup.go
T
2026-07-11 11:41:00 +08:00

68 lines
1.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package termout
import (
"fmt"
"os"
"strings"
)
// StartupWebUIOptions configures the startup Web UI banner.
type StartupWebUIOptions struct {
Scheme string
Port int
SelfSigned bool
HTTPRedirect bool
}
// PrintConfigCreated prints a short notice when config.yaml is bootstrapped.
func PrintConfigCreated() {
s := New(os.Stdout)
s.Println("")
s.Println(s.Green("✔ ") + s.Bold("已创建 config.yaml") + s.Dim("(来自 config.example.yaml"))
s.BlankLine()
}
// PrintStartupWebUI prints a colored startup banner for the Web UI.
func PrintStartupWebUI(opts StartupWebUIOptions) {
s := New(os.Stdout)
scheme := opts.Scheme
if scheme == "" {
scheme = "http"
}
port := opts.Port
if port <= 0 {
port = 8080
}
url := fmt.Sprintf("%s://127.0.0.1:%d/", scheme, port)
s.BlankLine()
s.Println(s.Bold(s.Cyan("CYBERSTRIKE AI")) + s.Dim(" / secure workspace"))
s.Println(s.Dim(strings.Repeat("─", 60)))
s.Println(s.Green("● ONLINE") + " " + s.Bold(s.White(url)))
if opts.SelfSigned {
s.Println(s.Dim(" TLS ") + s.Yellow("self-signed") + s.Dim(" · accept the browser warning once"))
}
if opts.HTTPRedirect {
s.Println(s.Dim(" Redirect ") + fmt.Sprintf("http://127.0.0.1:%d/ → HTTPS", port))
}
s.BlankLine()
}
// PrintBootstrapAdminCredentials prints the initial admin password banner.
func PrintBootstrapAdminCredentials(password string) {
password = strings.TrimSpace(password)
if password == "" {
return
}
s := New(os.Stdout)
s.Println(s.Bold(s.Yellow("ADMIN SETUP REQUIRED")))
s.Println(s.Dim(strings.Repeat("─", 60)))
s.Println(s.Dim(" Username ") + s.Bold(s.White("admin")))
s.Println(s.Dim(" Password ") + s.Bold(s.Yellow(password)))
s.BlankLine()
s.Println(s.Yellow(" ! ") + s.White("Store this password securely. It is shown only once."))
s.Println(s.Dim(" Change it in Settings immediately after signing in."))
s.BlankLine()
}