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{}) }