From 30ff9f1f918f83f6aa36530d83e58110cf2c2e0b Mon Sep 17 00:00:00 2001 From: mayor Date: Sat, 13 Jun 2026 00:04:40 -0500 Subject: [PATCH] refactor(cli): make getServiceProviders funlen-proof Extract the foundational providers into getCoreServiceProviders so the inline registration list stays under the 100-line funlen limit. New services register in getMostRecentServiceProviders (chain tail). Unblocks new-service PRs that all tripped the same shared-cli.go funlen error. Co-Authored-By: Claude Opus 4.8 --- cli.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cli.go b/cli.go index feb5fd2ae..01c31e8f5 100644 --- a/cli.go +++ b/cli.go @@ -2586,7 +2586,14 @@ func initializeServices(appCtx *service.AppContext) ([]service.Registerable, err // getServiceProviders returns the list of all available service providers. func getServiceProviders() []service.Provider { - return append([]service.Provider{ + return append(getCoreServiceProviders(), getRemainingServiceProviders()...) +} + +// getCoreServiceProviders returns the foundational service providers. +// Extracted from getServiceProviders to satisfy the funlen limit and to +// give the inline registration list headroom as new services are added. +func getCoreServiceProviders() []service.Provider { + return []service.Provider{ &ddbbackend.Provider{}, &s3backend.Provider{}, &ssmbackend.Provider{}, @@ -2598,6 +2605,14 @@ func getServiceProviders() []service.Provider { &secretsmanagerbackend.Provider{}, &lambdabackend.Provider{}, &ebbackend.Provider{}, + } +} + +// getRemainingServiceProviders returns the remaining service providers. New +// services should be registered in getMostRecentServiceProviders (the tail of +// the chain), not here, to keep this function under the funlen limit. +func getRemainingServiceProviders() []service.Provider { + return append([]service.Provider{ &apigwbackend.Provider{}, &cwlogsbackend.Provider{}, &sfnbackend.Provider{},