/ executer.go
executer.go
 1  package dispatch2
 2  
 3  import "context"
 4  
 5  type Executer[Config any] interface {
 6  	Execute(context.Context, *Config, []string) error
 7  }
 8  
 9  type ExecuterFunc[Config any] func(context.Context, *Config, []string) error
10  
11  func (e ExecuterFunc[Config]) Execute(ctx context.Context, config *Config, args []string) error {
12  	return e(ctx, config, args)
13  }
14  
15  func WrapExecuter[Config any](e Executer[Config]) ExecuterFunc[Config] {
16  	return func(ctx context.Context, cfg *Config, args []string) error {
17  		return e.Execute(ctx, cfg, args)
18  	}
19  }
20  
21  func EmptyExecuter[Config any]() ExecuterFunc[Config] {
22  	return func(_ context.Context, _ *Config, _ []string) error {
23  		return nil
24  	}
25  }