github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/control/controlstatus/context.go (about)

     1  package controlstatus
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/turbot/steampipe/pkg/contexthelpers"
     7  )
     8  
     9  var (
    10  	contextKeyControlHook = contexthelpers.ContextKey("control_hook")
    11  )
    12  
    13  func AddControlHooksToContext(ctx context.Context, statusHooks ControlHooks) context.Context {
    14  	// if the context already contains ControlHooks, do nothing
    15  	// this may happen when executing a dashboard snapshot -
    16  	if _, ok := ctx.Value(contextKeyControlHook).(ControlHooks); ok {
    17  		return ctx
    18  	}
    19  
    20  	return context.WithValue(ctx, contextKeyControlHook, statusHooks)
    21  }
    22  
    23  func ControlHooksFromContext(ctx context.Context) ControlHooks {
    24  	if ctx == nil {
    25  		return NullHooks
    26  	}
    27  	if val, ok := ctx.Value(contextKeyControlHook).(ControlHooks); ok {
    28  		return val
    29  	}
    30  	// no status hook in context - return null status hook
    31  	return NullHooks
    32  }
    33  
    34  func OnStart(ctx context.Context, p *ControlProgress) {
    35  	ControlHooksFromContext(ctx).OnStart(ctx, p)
    36  }
    37  
    38  func OnControlStart(ctx context.Context, controlRun ControlRunStatusProvider, p *ControlProgress) {
    39  	ControlHooksFromContext(ctx).OnControlStart(ctx, controlRun, p)
    40  }
    41  
    42  func OnControlComplete(ctx context.Context, controlRun ControlRunStatusProvider, p *ControlProgress) {
    43  	ControlHooksFromContext(ctx).OnControlComplete(ctx, controlRun, p)
    44  }
    45  
    46  func OnControlError(ctx context.Context, controlRun ControlRunStatusProvider, p *ControlProgress) {
    47  	ControlHooksFromContext(ctx).OnControlError(ctx, controlRun, p)
    48  }
    49  
    50  func OnComplete(ctx context.Context, p *ControlProgress) {
    51  	ControlHooksFromContext(ctx).OnComplete(ctx, p)
    52  }