summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/logr/v2/pkg.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-10-16 23:11:32 +0200
committerWim <wim@42.be>2021-10-16 23:23:24 +0200
commit20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8 (patch)
tree230edca06449a8d1755f08aabf45a03e07e6f17c /vendor/github.com/mattermost/logr/v2/pkg.go
parent57fce93af7f64f025cec6f3ed6088163086bc9fe (diff)
downloadmatterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.gz
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.tar.bz2
matterbridge-msglm-20f6c05ec50739d31f4dbe9fde0d223f2c43f6e8.zip
Update vendor
Diffstat (limited to 'vendor/github.com/mattermost/logr/v2/pkg.go')
-rw-r--r--vendor/github.com/mattermost/logr/v2/pkg.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/logr/v2/pkg.go b/vendor/github.com/mattermost/logr/v2/pkg.go
new file mode 100644
index 00000000..873b2e95
--- /dev/null
+++ b/vendor/github.com/mattermost/logr/v2/pkg.go
@@ -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
+}