internal/contextual/values.go (21 lines of code) (raw):

package contextual import ( "context" "github.com/aws/ec2-macos-utils/internal/system" ) type contextKey uint const ( // productKey is used to access current Product from context. productKey contextKey = iota + 1 ) // WithProduct extends the context to provide a Product. func WithProduct(ctx context.Context, product *system.Product) context.Context { return context.WithValue(ctx, productKey, product) } // Product fetches the system's Product provided in ctx. func Product(ctx context.Context) *system.Product { if val := ctx.Value(productKey); val != nil { if v, ok := val.(*system.Product); ok { return v } panic("incoherent context") } return nil }