// Copyright 2024 Florian Beisel // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package rules import "reflect" type RuleFactoryFunc func() HostnameRule type RuleDescriptor struct { Description string Factory RuleFactoryFunc InputStruct reflect.Type } var RulesRegistry = map[string]RuleDescriptor{ "notebook": { Description: "Generates hostnames for notebooks.", Factory: func() HostnameRule { return &NotebookRule{} }, InputStruct: reflect.TypeOf(NotebookRuleInput{}), }, "server": { Description: "Generates hostnames for servers.", Factory: func() HostnameRule { return &ServerRule{} }, InputStruct: reflect.TypeOf(ServerRuleInput{}), }, // ... other rules ... }