27 lines
561 B
Go
27 lines
561 B
Go
|
|
package time
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"oss.terrastruct.com/d2/lib/env"
|
||
|
|
)
|
||
|
|
|
||
|
|
func HumanDate(t time.Time) string {
|
||
|
|
local := t.Local()
|
||
|
|
return local.Format(time.RFC822)
|
||
|
|
}
|
||
|
|
|
||
|
|
// WithTimeout returns context.WithTimeout(ctx, timeout) but timeout is overridden with D2_TIMEOUT if set
|
||
|
|
func WithTimeout(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc) {
|
||
|
|
t := timeout
|
||
|
|
if seconds, has := env.Timeout(); has {
|
||
|
|
t = time.Duration(seconds) * time.Second
|
||
|
|
}
|
||
|
|
if t <= 0 {
|
||
|
|
return ctx, func() {}
|
||
|
|
}
|
||
|
|
|
||
|
|
return context.WithTimeout(ctx, t)
|
||
|
|
}
|