fuzzyworld

find-stone-beer / commit

Reworked how GitLab pages are generated: create JSON from result data, then load that on the page programmatically.

c9c0c46ae628c307a9be4f93aef91fb79c69d5c0 · Pavel Safronov · 2023-08-23 13:54:36 -0700 · parents 2766918cb5b5

Reworked how GitLab pages are generated: create JSON from result data, then load that on the page programmatically.
 .gitignore        |  2 +-
 main.go           | 25 ++++++-------------------
 public/index.html | 24 ++++++++++++++++++++++++
 3 files changed, 31 insertions(+), 20 deletions(-)

diff --git a/.gitignore b/.gitignore
index a633703..16e3f13 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
 cache/
 __debug_bin
 find_stone_beer
-public/
+public/results.js
\ No newline at end of file
diff --git a/main.go b/main.go
index fe7c234..848f128 100644
--- a/main.go
+++ b/main.go
@@ -129,26 +129,13 @@ func main() {
 	fmt.Printf("Message length: %d\n", len(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>`)
-
-	outPath := "./public/index.html"
-	outDir := filepath.Dir(outPath)
-	if _, err := os.Stat(outDir); os.IsNotExist(err) {
-		os.MkdirAll(outDir, 0700)
+	relevantSellersJson, err := json.MarshalIndent(relevantSellers, "", "  ")
+	if err != nil {
+		panic(err)
 	}
-	err = os.WriteFile(outPath, []byte(sb.String()), 0644)
+	resultsJson := fmt.Sprintf("var results = %s;", relevantSellersJson)
+	outPath := "./public/results.js"
+	err = os.WriteFile(outPath, []byte(resultsJson), 0644)
 	if err != nil {
 		panic(err)
 	}
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..e369278
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <title>FindStoneBeer - Results</title>
+</head>
+
+<body>
+<h1>Find Stone Beer</h1>
+<div id="root"></div>
+<script src="results.js"></script>
+<script>
+    console.log(results);
+    results.forEach(function (result) {
+        var div = document.createElement('h4');
+        div.innerHTML = result.Message;
+        document.getElementById('root').appendChild(div);
+    });
+</script>
+
+</body>
+
+</html>
\ No newline at end of file