Files
kubesphere/vendor/github.com/open-policy-agent/opa/loader/extension/extension.go
KubeSphere CI Bot 447a51f08b feat: kubesphere 4.0 (#6115)
* feat: kubesphere 4.0

Signed-off-by: ci-bot <ci-bot@kubesphere.io>

* feat: kubesphere 4.0

Signed-off-by: ci-bot <ci-bot@kubesphere.io>

---------

Signed-off-by: ci-bot <ci-bot@kubesphere.io>
Co-authored-by: ks-ci-bot <ks-ci-bot@example.com>
Co-authored-by: joyceliu <joyceliu@yunify.com>
2024-09-06 11:05:52 +08:00

41 lines
1.2 KiB
Go

// Copyright 2023 The OPA Authors. All rights reserved.
// Use of this source code is governed by an Apache2
// license that can be found in the LICENSE file.
package extension
import (
"sync"
)
var pluginMtx sync.Mutex
var bundleExtensions map[string]Handler
// Handler is used to unmarshal a byte slice of a registered extension
// EXPERIMENTAL: Please don't rely on this functionality, it may go
// away or change in the future.
type Handler func([]byte, any) error
// RegisterExtension registers a Handler for a certain file extension, including
// the dot: ".json", not "json".
// EXPERIMENTAL: Please don't rely on this functionality, it may go
// away or change in the future.
func RegisterExtension(name string, handler Handler) {
pluginMtx.Lock()
defer pluginMtx.Unlock()
if bundleExtensions == nil {
bundleExtensions = map[string]Handler{}
}
bundleExtensions[name] = handler
}
// FindExtension ios used to look up a registered extension Handler
// EXPERIMENTAL: Please don't rely on this functionality, it may go
// away or change in the future.
func FindExtension(ext string) Handler {
pluginMtx.Lock()
defer pluginMtx.Unlock()
return bundleExtensions[ext]
}