func/pkg/scaffolding/signatures.go

49 lines
1.1 KiB
Go

package scaffolding
type Signature int
const (
UnknownSignature Signature = iota
InstancedHTTP
InstancedCloudevents
StaticHTTP
StaticCloudevents
)
func (s Signature) String() string {
return []string{
"unknown",
"instanced-http",
"instanced-cloudevents",
"static-http",
"static-cloudevents",
}[s]
}
// Note that in all places other than the invocation hint (where singular
// is logically correct) "cloudevents" is plural in all places (variables,
// imports, enums etc) to match the Cloudevents library and organization's
// choice.
// signatureMap
var signatureMap = map[bool]map[string]Signature{
true: { // Instanced
"http": InstancedHTTP,
"cloudevent": InstancedCloudevents},
false: { // !Instanced
"http": StaticHTTP,
"cloudevent": StaticCloudevents},
}
// toSignature converts an instanced boolean and invocation hint into
// a Signature enum.
func toSignature(instanced bool, invoke string) Signature {
if invoke == "" {
invoke = "http"
}
s, ok := signatureMap[instanced][invoke]
if !ok {
return UnknownSignature
}
return s
}