fuzzyworld

find-stone-beer / commit

Write full set of results to HTML file and treat this file as artifacts of CI job.

cc4e48df5ce5ee4ae2accef84687afb6646e62ce · Pavel Safronov · 2023-08-23 12:12:13 -0700 · parents 8e00f64ed481

Write full set of results to HTML file and treat this file as artifacts of CI job.
 .gitignore     |  1 +
 .gitlab-ci.yml |  4 ++++
 main.go        | 35 ++++++++++++++++++++++++++---------
 3 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/.gitignore b/.gitignore
index c8e2541..a6bb4d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 cache
 __debug_bin
 find_stone_beer
+results.html
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c99721d..fb5c98e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,3 +18,7 @@ run-job:
   stage: run
   script:
     - make run
+  artifacts:
+    paths:
+      - results.html
+  
diff --git a/main.go b/main.go
index d808959..04b0d81 100644
--- a/main.go
+++ b/main.go
@@ -22,6 +22,7 @@ type relevantSeller struct {
 	Name            string
 	Pos             geodist.Coord
 	DeliveryAgeDays int
+	Message         string
 }
 
 const (
@@ -98,10 +99,14 @@ func main() {
 			if daysSinceDelivery > maxDeliveryWindowDays {
 				continue
 			}
+			mapsLink := getGoogleMapsLink(seller.Pos)
+			message := fmt.Sprintf("<a href='%s'>%s</a> - delivered %d days ago\n", mapsLink, seller.Title, daysSinceDelivery)
+
 			relevantSellers = append(relevantSellers, relevantSeller{
 				Name:            seller.Title,
 				Pos:             seller.Pos,
 				DeliveryAgeDays: daysSinceDelivery,
+				Message:         message,
 			})
 		}
 	}
@@ -111,25 +116,37 @@ func main() {
 		return a.DeliveryAgeDays - b.DeliveryAgeDays
 	})
 
-	// more info text and link
 	var moreInfoText = "\n\nResults truncated, see full list <a href='https://gitlab.com/PavelSafronov/find-stone-beer'>here</a>"
 	var message string
 	for _, seller := range relevantSellers {
-		mapsLink := getGoogleMapsLink(seller.Pos)
-		sellerLink := fmt.Sprintf("<a href='%s'>%s</a> - delivered %d days ago\n", mapsLink, seller.Name, seller.DeliveryAgeDays)
-		newMessage := message + sellerLink
+		newMessage := message + seller.Message
 		if len(newMessage)+len(moreInfoText) > MaxMessageLength {
 			message += moreInfoText
 			break
 		}
 		message = newMessage
 	}
-
 	fmt.Printf("Message length: %d\n", len(message))
-	fmt.Println()
-	fmt.Print(message)
-	fmt.Println()
-	SendPushoverMessage(message)
+	// SendPushoverMessage(message)
+
+	sb := strings.Builder{}
+	sb.WriteString(`<!DOCTYPE html>
+	<html lang="en">
+	  <head>
+		<meta charset="utf-8">
+		<title>FindStoneBeer - Results</title>
+	  </head>
+	  <body>`)
+	for _, seller := range relevantSellers {
+		sb.WriteString(seller.Message)
+		sb.WriteString("<br>")
+	}
+	sb.WriteString(`</body></html>`)
+
+	err = os.WriteFile("results.html", []byte(sb.String()), 0644)
+	if err != nil {
+		panic(err)
+	}
 }
 
 func getGoogleMapsLink(coords geodist.Coord) string {