in pkg/cmd/cmdutil/cmdutil.go [103:138]
func getHandlerPairs(cmd *cobra.Command, config cfg.Config) []handlerPair {
// always register these paths
handlerPairs := []handlerPair{
{path: "/", handler: handlers.ListRoutesHandler},
{path: "/latest", handler: handlers.ListRoutesHandler},
{path: static.ServicePath, handler: handlers.ListRoutesHandler},
{path: dynamic.ServicePath, handler: handlers.ListRoutesHandler},
}
isSpot := strings.Contains(cmd.Name(), "spot")
isEvents := strings.Contains(cmd.Name(), "events")
isASGLifecycle := strings.Contains(cmd.Name(), "asglifecycle")
subCommandHandlers := map[string][]handlerPair{
"spot": {{path: config.Metadata.Paths.Spot, handler: spot.Handler},
{path: config.Metadata.Paths.SpotTerminationTime, handler: spot.Handler},
{path: config.Metadata.Paths.RebalanceRecTime, handler: spot.Handler}},
"events": {{path: config.Metadata.Paths.Events, handler: events.Handler}},
"asglifecycle": {{path: config.Metadata.Paths.ASGLifecycle, handler: asglifecycle.Handler}},
}
if isSpot {
handlerPairs = append(handlerPairs, subCommandHandlers["spot"]...)
} else if isEvents {
handlerPairs = append(handlerPairs, subCommandHandlers["events"]...)
} else if isASGLifecycle {
handlerPairs = append(handlerPairs, subCommandHandlers["asglifecycle"]...)
} else {
// root registers all subcommands
for k := range subCommandHandlers {
handlerPairs = append(handlerPairs, subCommandHandlers[k]...)
}
}
return handlerPairs
}