| /* |
| Copyright The containerd Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package epoch |
| |
| import ( |
| "context" |
| "time" |
| ) |
| |
| type ( |
| epochKey struct{} |
| ) |
| |
| // WithSourceDateEpoch associates the context with the epoch. |
| func WithSourceDateEpoch(ctx context.Context, tm *time.Time) context.Context { |
| return context.WithValue(ctx, epochKey{}, tm) |
| } |
| |
| // FromContext returns the epoch associated with the context. |
| // FromContext does not fall back to read the SOURCE_DATE_EPOCH env var. |
| func FromContext(ctx context.Context) *time.Time { |
| v := ctx.Value(epochKey{}) |
| if v == nil { |
| return nil |
| } |
| return v.(*time.Time) |
| } |