diff --git a/run.go b/run.go index d023070..2d5d468 100644 --- a/run.go +++ b/run.go @@ -213,6 +213,10 @@ func RunCmdRun(workingpath string, parts []string) error { return nil } +func (r *RunResult) Stdout() string { + return string(r.Output) +} + // run, but set the working path func Output(path string, args []string) *RunResult { r := new(RunResult) diff --git a/time.go b/time.go new file mode 100644 index 0000000..8dda83a --- /dev/null +++ b/time.go @@ -0,0 +1,82 @@ +package shell + +import ( + "fmt" + "strconv" + "strings" + "time" + + "go.wit.com/log" +) + +// converts a git for-each-ref date. "Wed Feb 7 10:13:38 2024 -0600" +func getGitDateStamp(gitdefault string) (time.Time, string, string) { + // now := time.Now().Format("Wed Feb 7 10:13:38 2024 -0600") + const gitLayout = "Mon Jan 2 15:04:05 2006 -0700" + tagTime, err := time.Parse(gitLayout, gitdefault) + if err != nil { + log.Warn("GOT THIS IN PARSE AAA." + gitdefault + ".AAA") + log.Warn(err) + return time.Now(), "Feb 1 12:34:56 1978 -0600", "" + } + return tagTime, gitdefault, GetDurationStamp(tagTime) +} +func getRawDateStamp(raw string) (time.Time, string, string) { + parts := strings.Split(raw, " ") + if len(parts) == 0 { + // raw was blank here + // return "Jan 4 1977", "40y" // eh, why not. it'll be easy to grep for this + return time.Now(), "Jan 4 1977", "40y" // eh, why not. it'll be easy to grep for this + } + i, err := strconv.ParseInt(parts[0], 10, 64) // base 10 string, return int64 + if err != nil { + log.Warn("Error converting timestamp:", raw) + log.Warn("Error converting timestamp err =", err) + return time.Now(), "", "" + } + + // Parse the Unix timestamp into a time.Time object + gitTagDate := time.Unix(i, 0) + return gitTagDate, gitTagDate.UTC().Format("2006/01/02 15:04:05 UTC"), GetDurationStamp(gitTagDate) +} + +func GetDurationStamp(t time.Time) string { + + // Get the current time + currentTime := time.Now() + + // Calculate the duration between t current time + duration := currentTime.Sub(t) + + return FormatDuration(duration) +} + +func FormatDuration(d time.Duration) string { + seconds := int(d.Seconds()) % 60 + minutes := int(d.Minutes()) % 60 + hours := int(d.Hours()) % 24 + days := int(d.Hours()) / 24 + years := int(d.Hours()) / (24 * 365) + + result := "" + if years > 0 { + result += fmt.Sprintf("%dy ", years) + return result + } + if days > 0 { + result += fmt.Sprintf("%dd ", days) + return result + } + if hours > 0 { + result += fmt.Sprintf("%dh ", hours) + return result + } + if minutes > 0 { + result += fmt.Sprintf("%dm ", minutes) + return result + } + if seconds > 0 { + result += fmt.Sprintf("%ds", seconds) + } + return result +}