mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-07-05 14:04:02 +00:00
Update vendor
This commit is contained in:
57
vendor/github.com/mattermost/logr/v2/pkg.go
generated
vendored
Normal file
57
vendor/github.com/mattermost/logr/v2/pkg.go
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
package logr
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
maximumStackDepth int = 30
|
||||
)
|
||||
|
||||
var (
|
||||
logrPkg string
|
||||
pkgCalcOnce sync.Once
|
||||
)
|
||||
|
||||
// GetPackageName returns the root package name of Logr.
|
||||
func GetLogrPackageName() string {
|
||||
pkgCalcOnce.Do(func() {
|
||||
logrPkg = GetPackageName("GetLogrPackageName")
|
||||
})
|
||||
return logrPkg
|
||||
}
|
||||
|
||||
// GetPackageName returns the package name of the caller.
|
||||
// `callingFuncName` should be the name of the calling function and
|
||||
// should be unique enough not to collide with any runtime methods.
|
||||
func GetPackageName(callingFuncName string) string {
|
||||
var pkgName string
|
||||
|
||||
pcs := make([]uintptr, maximumStackDepth)
|
||||
_ = runtime.Callers(0, pcs)
|
||||
|
||||
for _, pc := range pcs {
|
||||
funcName := runtime.FuncForPC(pc).Name()
|
||||
if strings.Contains(funcName, callingFuncName) {
|
||||
pkgName = ResolvePackageName(funcName)
|
||||
break
|
||||
}
|
||||
}
|
||||
return pkgName
|
||||
}
|
||||
|
||||
// ResolvePackageName reduces a fully qualified function name to the package name
|
||||
func ResolvePackageName(f string) string {
|
||||
for {
|
||||
lastPeriod := strings.LastIndex(f, ".")
|
||||
lastSlash := strings.LastIndex(f, "/")
|
||||
if lastPeriod > lastSlash {
|
||||
f = f[:lastPeriod]
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return f
|
||||
}
|
Reference in New Issue
Block a user