9c88801a12
Back in the before time, the best practices surrounding usage of Context weren't quite worked out. We defined our own type to make usage easier. As this packaged was used elsewhere, it make it more and more challenging to integrate with the forked `Context` type. Now that it is available in the standard library, we can just use that one directly. To make usage more consistent, we now use `dcontext` when referring to the distribution context package. Signed-off-by: Stephen J Day <stephen.day@docker.com>
23 lines
727 B
Go
23 lines
727 B
Go
package context
|
|
|
|
import "context"
|
|
|
|
type versionKey struct{}
|
|
|
|
func (versionKey) String() string { return "version" }
|
|
|
|
// WithVersion stores the application version in the context. The new context
|
|
// gets a logger to ensure log messages are marked with the application
|
|
// version.
|
|
func WithVersion(ctx context.Context, version string) context.Context {
|
|
ctx = context.WithValue(ctx, versionKey{}, version)
|
|
// push a new logger onto the stack
|
|
return WithLogger(ctx, GetLogger(ctx, versionKey{}))
|
|
}
|
|
|
|
// GetVersion returns the application version from the context. An empty
|
|
// string may returned if the version was not set on the context.
|
|
func GetVersion(ctx context.Context) string {
|
|
return GetStringValue(ctx, versionKey{})
|
|
}
|