From e42f688ac5aee09ed649c1b7add3a60f9894a1be Mon Sep 17 00:00:00 2001 From: Rudi Date: Sat, 18 Nov 2023 11:26:53 -0500 Subject: [PATCH] Better jobname/timestamp detection --- printer.go | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/printer.go b/printer.go index 1c55d0f..dc81aec 100644 --- a/printer.go +++ b/printer.go @@ -48,10 +48,20 @@ func printWhenDone() { } } +func delete_empty (s []string) []string { + var r []string + for _, str := range s { + if str != "" { + r = append(r, str) + } + } + return r +} + func makePdf() { o := output output = "" - jobname := "nil" + outfile := "nil" m := pdf.NewMaroto(consts.Landscape, consts.Letter) scanner := bufio.NewScanner(strings.NewReader(o)) format := props.Text{ @@ -63,8 +73,34 @@ func makePdf() { for scanner.Scan() { line := scanner.Text() if strings.HasPrefix(line, "****A") && strings.Contains(line, "START") { + parts := strings.Split(line, " ") - jobname = fmt.Sprintf("%+v-JOB_%+v", parts[4], strings.ReplaceAll(parts[11], " ", "_")) + parts = delete_empty(parts) + var jobname, timestamp string + for i, part := range parts { + if len(part) == 0 { + continue + } + if i == 2 { + if parts[2] == "JOB" { + jobname = parts[4] + } else { + jobname = fmt.Sprintf("%+v%+v", parts[4], parts[2]) + } + } + if len(part) > 12 { + ts, err := time.Parse("03.04.05 PM 02 Jan 06", strings.Trim(part, " ")) + if err != nil { + continue + } + timestamp = ts.Format("2006-01-02_15-04-05") + break + } + + } + + + outfile = fmt.Sprintf("%+v-JOB_%+v", timestamp, jobname) } page := m.GetCurrentPage() if strings.HasPrefix(line, "\f") && !firstRun { @@ -86,7 +122,7 @@ func makePdf() { }) }) } - err := m.OutputFileAndClose(fmt.Sprintf("%+v.pdf", jobname)) + err := m.OutputFileAndClose(fmt.Sprintf("%+v.pdf", outfile)) if err != nil { fmt.Printf("Error closing pdf\n") return