Co-Authored-By: hi019 <65871571+hi019@users.noreply.github.com>
Co-Authored-By: RW <7063188+ReneWerner87@users.noreply.github.com>
Co-Authored-By: kiyon <kiyon@gofiber.io>
Co-Authored-By: Roger Guldbrandsen <8797880+kinbiko@users.noreply.github.com>
pull/767/head
Fenny 2020-09-14 08:05:34 +02:00
parent 82e30c8db5
commit ca9c8c632f
2 changed files with 70 additions and 64 deletions

115
app.go
View File

@ -321,15 +321,16 @@ func (app *App) Use(args ...interface{}) Router {
prefix = arg prefix = arg
case Handler: case Handler:
handlers = append(handlers, arg) handlers = append(handlers, arg)
case *App: // TODO: v2.1.0
stack := arg.Stack() // case *App:
for m := range stack { // stack := arg.Stack()
for r := range stack[m] { // for m := range stack {
route := app.copyRoute(stack[m][r]) // for r := range stack[m] {
app.addRoute(route.Method, app.addPrefixToRoute(prefix, route)) // route := app.copyRoute(stack[m][r])
} // app.addRoute(route.Method, app.addPrefixToRoute(prefix, route))
} // }
return app // }
// return app
default: default:
panic(fmt.Sprintf("use: invalid handler %v\n", reflect.TypeOf(arg))) panic(fmt.Sprintf("use: invalid handler %v\n", reflect.TypeOf(arg)))
} }
@ -636,31 +637,22 @@ func (app *App) startupMessage(addr string, tls bool, pids string) {
return return
} }
// ascii logo
var logo string var logo string
// logo += `%s _______ __ %s` + "\n"
// logo += `%s ____%s / ____(_) /_ ___ _____ %s` + "\n"
// logo += `%s_____%s / /_ / / __ \/ _ \/ ___/ %s` + "\n"
// logo += `%s __%s / __/ / / /_/ / __/ / %s` + "\n"
// logo += `%s /_/ /_/_.___/\___/_/%s %s` + "\n"
logo += "\n%s" logo += "\n%s"
logo += " ┌───────────────────────────────────────────────────────┐\n" logo += " ┌───────────────────────────────────────────────────┐\n"
logo += " │ %sFiber v%s%s │\n" logo += " │ %s │\n"
logo += " │ Express inspired web framework │\n" logo += " │ %s │\n"
logo += " │ │\n" logo += " │ │\n"
logo += " │ Host : %s %s : OS │\n" logo += " │ Handlers %s Threads %s │\n"
logo += " │ Port : %s %s : Threads │\n" logo += " │ Prefork .%s PID ....%s │\n"
logo += " │ TLS : %s %s : Prefork │\n" logo += " └───────────────────────────────────────────────────┘"
logo += " │ Handlers : %s %s : PID │\n" logo += "%s\n\n"
logo += " └───────────────────────────────────────────────────────┘"
logo += "%s\n"
const ( const (
cBlack = "\u001b[90m" cBlack = "\u001b[90m"
cRed = "\u001b[91m" // cRed = "\u001b[91m"
cCyan = "\u001b[96m" cCyan = "\u001b[96m"
cGreen = "\u001b[92m" // cGreen = "\u001b[92m"
// cYellow = "\u001b[93m" // cYellow = "\u001b[93m"
// cBlue = "\u001b[94m" // cBlue = "\u001b[94m"
// cMagenta = "\u001b[95m" // cMagenta = "\u001b[95m"
@ -668,37 +660,52 @@ func (app *App) startupMessage(addr string, tls bool, pids string) {
cReset = "\u001b[0m" cReset = "\u001b[0m"
) )
clrL := func(v interface{}) string { value := func(s string, width int) string {
if v == "disabled" { pad := width - len(s)
return fmt.Sprintf("%s%15v%s", cRed, v, cBlack) str := ""
for i := 0; i < pad; i++ {
str += "."
} }
if v == "enabled" { if s == "Disabled" {
return fmt.Sprintf("%s%15v%s", cGreen, v, cBlack) str += " " + s
} else {
str += fmt.Sprintf(" %s%s%s", cCyan, s, cBlack)
} }
return fmt.Sprintf("%s%15v%s", cCyan, v, cBlack) return str
} }
clR := func(v interface{}) string {
if v == "disabled" { center := func(s string, width int) string {
return fmt.Sprintf("%s%-15v%s", cRed, v, cBlack) pad := strconv.Itoa((width - len(s)) / 2)
str := fmt.Sprintf("%"+pad+"s", " ")
str += s
str += fmt.Sprintf("%"+pad+"s", " ")
if len(str) < width {
str += " "
} }
if v == "enabled" { return str
return fmt.Sprintf("%s%-15v%s", cGreen, v, cBlack) }
centerValue := func(s string, width int) string {
pad := strconv.Itoa((width - len(s)) / 2)
str := fmt.Sprintf("%"+pad+"s", " ")
str += fmt.Sprintf("%s%s%s", cCyan, s, cBlack)
str += fmt.Sprintf("%"+pad+"s", " ")
if len(str)-10 < width {
str += " "
} }
return fmt.Sprintf("%s%-15v%s", cCyan, v, cBlack) return str
} }
host, port := parseAddr(addr) host, port := parseAddr(addr)
var ( if host == "" || host == "0.0.0.0" {
isTLS = "disabled" host = "127.0.0.1"
isPrefork = "disabled"
)
if host == "" {
host = "0.0.0.0"
} }
addr = "http://" + host + ":" + port
if tls { if tls {
isTLS = "enabled" addr = "https://" + host + ":" + port
} }
isPrefork := "disabled"
if app.config.Prefork { if app.config.Prefork {
isPrefork = "enabled" isPrefork = "enabled"
} }
@ -707,14 +714,12 @@ func (app *App) startupMessage(addr string, tls bool, pids string) {
if os.Getenv("TERM") == "dumb" || (!isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd())) { if os.Getenv("TERM") == "dumb" || (!isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd())) {
out = colorable.NewNonColorable(os.Stdout) out = colorable.NewNonColorable(os.Stdout)
} }
fmt.Fprintf(out, logo, fmt.Fprintf(out, logo,
cBlack, cBlack,
cCyan, Version, cBlack, centerValue(" Fiber v"+Version, 49),
clR(host), clrL(utils.ToUpper(runtime.GOOS)), center(addr, 49),
clR(port), clrL(runtime.NumCPU()), value(strconv.Itoa(app.handlerCount), 14), value(strconv.Itoa(runtime.NumCPU()), 14),
clR(isTLS), clrL(isPrefork), value(isPrefork, 14), value(strconv.Itoa(os.Getpid()), 14),
clR(app.handlerCount), clrL(os.Getpid()),
cReset, cReset,
) )

View File

@ -38,15 +38,16 @@ func (grp *Group) Use(args ...interface{}) Router {
prefix = arg prefix = arg
case Handler: case Handler:
handlers = append(handlers, arg) handlers = append(handlers, arg)
case *App: // TODO: v2.1.0
stack := arg.Stack() // case *App:
for m := range stack { // stack := arg.Stack()
for r := range stack[m] { // for m := range stack {
route := grp.app.copyRoute(stack[m][r]) // for r := range stack[m] {
grp.app.addRoute(route.Method, grp.app.addPrefixToRoute(prefix, route)) // route := grp.app.copyRoute(stack[m][r])
} // grp.app.addRoute(route.Method, grp.app.addPrefixToRoute(prefix, route))
} // }
return grp.app // }
// return grp.app
default: default:
panic(fmt.Sprintf("use: invalid handler %v\n", reflect.TypeOf(arg))) panic(fmt.Sprintf("use: invalid handler %v\n", reflect.TypeOf(arg)))
} }