return the output

This commit is contained in:
Jeff Carr 2024-04-15 05:07:06 -05:00
parent 5553bda497
commit a3c2627caf
2 changed files with 86 additions and 0 deletions

4
run.go
View File

@ -213,6 +213,10 @@ func RunCmdRun(workingpath string, parts []string) error {
return nil return nil
} }
func (r *RunResult) Stdout() string {
return string(r.Output)
}
// run, but set the working path // run, but set the working path
func Output(path string, args []string) *RunResult { func Output(path string, args []string) *RunResult {
r := new(RunResult) r := new(RunResult)

82
time.go Normal file
View File

@ -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
}