@@ -114,35 +114,18 @@ func NewRunner(t schemaapi.CraftingSchema_Runner_RunnerType, authToken string, l
114114
115115// DiscoverRunner the runner environment
116116// This method does a simple check to see which runner is available in the environment
117- // by iterating over the different runners and performing duck-typing checks
118- // If more than one runner is detected, we default to generic since its an incongruent result
117+ // by iterating over the different runners and performing duck-typing checks.
118+ // It returns the first matching runner immediately to avoid unnecessary CheckEnv()
119+ // calls from remaining runners.
119120func DiscoverRunner (authToken string , logger zerolog.Logger ) SupportedRunner {
120- detected := []SupportedRunner {}
121-
122- // Create all runners and check their environment
123121 for _ , factory := range RunnerFactories {
124122 r := factory (authToken , & logger )
125123 if r .CheckEnv () {
126- detected = append (detected , r )
127- }
128- }
129-
130- // if we don't detect any runner or more than one, we default to generic
131- if len (detected ) == 0 {
132- return runners .NewGeneric ()
133- }
134-
135- if len (detected ) > 1 {
136- var detectedStr []string
137- for _ , d := range detected {
138- detectedStr = append (detectedStr , d .ID ().String ())
124+ return r
139125 }
140-
141- logger .Warn ().Strs ("detected" , detectedStr ).Msg ("multiple runners detected, incongruent environment" )
142- return runners .NewGeneric ()
143126 }
144127
145- return detected [ 0 ]
128+ return runners . NewGeneric ()
146129}
147130
148131func DiscoverAndEnforceRunner (enforcedRunnerType schemaapi.CraftingSchema_Runner_RunnerType , dryRun bool , authToken string , logger zerolog.Logger ) (SupportedRunner , error ) {
0 commit comments