From 4afad2518921d22d63d77a7a272ca42ff406459d Mon Sep 17 00:00:00 2001 From: Jithin James Date: Mon, 16 Oct 2017 16:25:56 +0530 Subject: [PATCH] Print all handlers on start-up --- debug.go | 20 ++++++++++++++++++++ doc.go | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/debug.go b/debug.go index 449291e6..55ff5716 100644 --- a/debug.go +++ b/debug.go @@ -6,8 +6,14 @@ package gin import ( "bytes" + "fmt" "html/template" "log" + "os" + "reflect" + "runtime" + + "golang.org/x/crypto/ssh/terminal" ) func init() { @@ -22,7 +28,21 @@ func IsDebugging() bool { func debugPrintRoute(httpMethod, absolutePath string, handlers HandlersChain) { if IsDebugging() { + s := "<<<<<<<\tHandlers Running\t>>>>>>>" + w := 100 + + if terminal.IsTerminal(int(os.Stdout.Fd())) { + w, _, _ = terminal.GetSize(int(os.Stdout.Fd())) + } else { + fmt.Println("Couldn't get terminal size. Using default value...") + } + fmt.Printf(fmt.Sprintf("%%%ds\n", w/2), s) + // fmt.Printf(fmt.Sprintf("%%-%ds", w/2), fmt.Sprintf(fmt.Sprintf("%%%ds\n", w/2), s)) + for i := 0; i < len(handlers); i += 2 { + fmt.Printf(" | %-50s | %-50s |\n", runtime.FuncForPC(reflect.ValueOf(handlers[i]).Pointer()).Name(), runtime.FuncForPC(reflect.ValueOf(handlers[i+1]).Pointer()).Name()) + } nuHandlers := len(handlers) + fmt.Printf("Total %d handlers found...\n", nuHandlers) handlerName := nameOfFunction(handlers.Last()) debugPrint("%-6s %-25s --> %s (%d handlers)\n", httpMethod, absolutePath, handlerName, nuHandlers) } diff --git a/doc.go b/doc.go index 01ac4a90..b555acab 100644 --- a/doc.go +++ b/doc.go @@ -3,4 +3,4 @@ Package gin implements a HTTP web framework called gin. See https://gin-gonic.github.io/gin/ for more information about gin. */ -package gin // import "github.com/gin-gonic/gin" +package gin // import "github.com/jithinjk/gin"