@@ -246,7 +246,7 @@ func (bm *BasicModule) RegisterHooks(logger *log.Logger) ([]*hooks.ModuleHook, e
246246 return nil , nil
247247 }
248248
249- hks , err := bm .searchModuleHooks ()
249+ hks , hasReadiness , err := bm .searchModuleHooks ()
250250 if err != nil {
251251 return nil , fmt .Errorf ("search module hooks failed: %w" , err )
252252 }
@@ -267,26 +267,27 @@ func (bm *BasicModule) RegisterHooks(logger *log.Logger) ([]*hooks.ModuleHook, e
267267 }
268268
269269 bm .hooks .registered = true
270+ bm .hasReadiness = hasReadiness
270271
271272 return hks , nil
272273}
273274
274- func (bm * BasicModule ) searchModuleHooks () ([]* hooks.ModuleHook , error ) {
275+ func (bm * BasicModule ) searchModuleHooks () ([]* hooks.ModuleHook , bool , error ) {
275276 shellHooks , err := bm .searchModuleShellHooks ()
276277 if err != nil {
277- return nil , fmt .Errorf ("search module shell hooks: %w" , err )
278+ return nil , false , fmt .Errorf ("search module shell hooks: %w" , err )
278279 }
279280
280281 goHooks := bm .searchModuleGoHooks ()
281282
282- batchHooks , err := bm .searchModuleBatchHooks ()
283+ batchHooks , hasReadiness , err := bm .searchModuleBatchHooks ()
283284 if err != nil {
284- return nil , fmt .Errorf ("search module batch hooks: %w" , err )
285+ return nil , false , fmt .Errorf ("search module batch hooks: %w" , err )
285286 }
286287
287288 if len (shellHooks )+ len (batchHooks ) > 0 {
288289 if err := bm .AssembleEnvironmentForModule (environmentmanager .ShellHookEnvironment ); err != nil {
289- return nil , fmt .Errorf ("Assemble %q module's environment: %w" , bm .GetName (), err )
290+ return nil , false , fmt .Errorf ("Assemble %q module's environment: %w" , bm .GetName (), err )
290291 }
291292 }
292293
@@ -311,7 +312,7 @@ func (bm *BasicModule) searchModuleHooks() ([]*hooks.ModuleHook, error) {
311312 return mHooks [i ].GetPath () < mHooks [j ].GetPath ()
312313 })
313314
314- return mHooks , nil
315+ return mHooks , hasReadiness , nil
315316}
316317
317318func (bm * BasicModule ) searchModuleShellHooks () ([]* kind.ShellHook , error ) {
@@ -373,18 +374,22 @@ func (bm *BasicModule) searchModuleShellHooks() ([]*kind.ShellHook, error) {
373374 return hks , nil
374375}
375376
376- func (bm * BasicModule ) searchModuleBatchHooks () ([]* kind.BatchHook , error ) {
377+ // searchModuleBatchHooks searches for batch hooks and returns them along with hasReadiness flag.
378+ // This function has no side effects - it doesn't modify bm.hasReadiness directly.
379+ // The caller (RegisterHooks) is responsible for setting bm.hasReadiness after successful registration.
380+ func (bm * BasicModule ) searchModuleBatchHooks () ([]* kind.BatchHook , bool , error ) {
377381 hooksDir := filepath .Join (bm .Path , "hooks" )
378382 if _ , err := os .Stat (hooksDir ); os .IsNotExist (err ) {
379- return nil , nil
383+ return nil , false , nil
380384 }
381385
382386 hooksRelativePaths , err := RecursiveGetBatchHookExecutablePaths (bm .safeName (), hooksDir , bm .logger , hooksExcludedDir ... )
383387 if err != nil {
384- return nil , err
388+ return nil , false , err
385389 }
386390
387391 hks := make ([]* kind.BatchHook , 0 )
392+ hasReadiness := false
388393
389394 // sort hooks by path
390395 sort .Strings (hooksRelativePaths )
@@ -393,20 +398,20 @@ func (bm *BasicModule) searchModuleBatchHooks() ([]*kind.BatchHook, error) {
393398 for _ , hookPath := range hooksRelativePaths {
394399 hookName , err := normalizeHookPath (filepath .Dir (bm .Path ), hookPath )
395400 if err != nil {
396- return nil , fmt .Errorf ("could not get hook name: %w" , err )
401+ return nil , false , fmt .Errorf ("could not get hook name: %w" , err )
397402 }
398403
399404 sdkcfgs , err := kind .GetBatchHookConfig (bm .safeName (), hookPath )
400405 if err != nil {
401- return nil , fmt .Errorf ("getting sdk config for '%s': %w" , hookName , err )
406+ return nil , false , fmt .Errorf ("getting sdk config for '%s': %w" , hookName , err )
402407 }
403408
404409 if sdkcfgs .Readiness != nil {
405- if bm . hasReadiness {
406- return nil , fmt .Errorf ("multiple readiness hooks found in %s" , hookPath )
410+ if hasReadiness {
411+ return nil , false , fmt .Errorf ("multiple readiness hooks found in %s" , hookPath )
407412 }
408413
409- bm . hasReadiness = true
414+ hasReadiness = true
410415
411416 // add readiness hook
412417 nestedHookName := fmt .Sprintf ("%s-readiness" , hookName )
@@ -422,7 +427,7 @@ func (bm *BasicModule) searchModuleBatchHooks() ([]*kind.BatchHook, error) {
422427 }
423428 }
424429
425- return hks , nil
430+ return hks , hasReadiness , nil
426431}
427432
428433func RecursiveGetBatchHookExecutablePaths (moduleName , dir string , logger * log.Logger , excludedDirs ... string ) ([]string , error ) {
0 commit comments