From 961d7f2924b14247cfe2d8bd23f6583dca869c40 Mon Sep 17 00:00:00 2001 From: Steve Kriss Date: Tue, 10 Apr 2018 11:22:47 -0700 Subject: [PATCH] kubernetes/pkg/printers/ShortHumanDuration -> apimachinery/pkg/util/duration Signed-off-by: Steve Kriss --- Gopkg.lock | 1 + pkg/cmd/util/output/backup_printer.go | 5 ++- .../pkg/util/duration/duration.go | 43 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 vendor/k8s.io/apimachinery/pkg/util/duration/duration.go diff --git a/Gopkg.lock b/Gopkg.lock index d770fabb7..bfed0cb89 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -525,6 +525,7 @@ "pkg/util/cache", "pkg/util/clock", "pkg/util/diff", + "pkg/util/duration", "pkg/util/errors", "pkg/util/framer", "pkg/util/httpstream", diff --git a/pkg/cmd/util/output/backup_printer.go b/pkg/cmd/util/output/backup_printer.go index 049b8d6a9..17153d223 100644 --- a/pkg/cmd/util/output/backup_printer.go +++ b/pkg/cmd/util/output/backup_printer.go @@ -24,6 +24,7 @@ import ( "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/duration" "k8s.io/kubernetes/pkg/printers" "github.com/heptio/ark/pkg/apis/ark/v1" @@ -111,8 +112,8 @@ func humanReadableTimeFromNow(when time.Time) string { now := time.Now() switch { case when == now || when.After(now): - return printers.ShortHumanDuration(when.Sub(now)) + return duration.ShortHumanDuration(when.Sub(now)) default: - return fmt.Sprintf("%s ago", printers.ShortHumanDuration(now.Sub(when))) + return fmt.Sprintf("%s ago", duration.ShortHumanDuration(now.Sub(when))) } } diff --git a/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go b/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go new file mode 100644 index 000000000..00404c6cd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/duration/duration.go @@ -0,0 +1,43 @@ +/* +Copyright 2018 The Kubernetes 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 duration + +import ( + "fmt" + "time" +) + +// ShortHumanDuration returns a succint representation of the provided duration +// with limited precision for consumption by humans. +func ShortHumanDuration(d time.Duration) string { + // Allow deviation no more than 2 seconds(excluded) to tolerate machine time + // inconsistence, it can be considered as almost now. + if seconds := int(d.Seconds()); seconds < -1 { + return fmt.Sprintf("") + } else if seconds < 0 { + return fmt.Sprintf("0s") + } else if seconds < 60 { + return fmt.Sprintf("%ds", seconds) + } else if minutes := int(d.Minutes()); minutes < 60 { + return fmt.Sprintf("%dm", minutes) + } else if hours := int(d.Hours()); hours < 24 { + return fmt.Sprintf("%dh", hours) + } else if hours < 24*365 { + return fmt.Sprintf("%dd", hours/24) + } + return fmt.Sprintf("%dy", int(d.Hours()/24/365)) +}