1
Fork 0

feat: add a simple way of detecting if the sitemap needs updating

because there's no easy way to get the markdown source of anything
without logging in and pressing the edit button this just adds
a check if the saved sitemap from a previous run is the same as
the new one that was generated, and logs an appropriate message.
This commit is contained in:
Bauke 2019-10-10 22:41:09 +02:00
parent 568202efd1
commit d97f145c89
Signed by: Bauke
GPG Key ID: C1C0F29952BCF558
2 changed files with 36 additions and 1 deletions

3
.gitignore vendored
View File

@ -18,5 +18,6 @@
/vendor/
/Godeps/
# Sitemap file
# Sitemap files
previous-sitemap.md
sitemap.md

34
main.go
View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"io/ioutil"
"os"
"sort"
"strings"
@ -18,6 +19,13 @@ type wikiPage struct {
func main() {
log.Infof("Tildes Wiki Sitemap\n")
// Create a variable we'll use to check if a current sitemap already exists
_, sitemapExists := os.Stat("sitemap.md")
if sitemapExists == nil {
// If it does exist, rename it to "previous"
os.Rename("sitemap.md", "previous-sitemap.md")
}
// Create a groups array, which will be used to sort the output
// (couldn't figure out how to sort a map by keys)
groups := make([]string, 0)
@ -106,5 +114,31 @@ func main() {
// And finally write how many groups and pages there are, like `tree` writes directories and files
file.WriteString(fmt.Sprintf("\n%v groups, %v pages\n", len(groups), pagesTotal))
// If the sitemap exists we want to read both sitemaps and check if they're the same
if sitemapExists == nil {
file, err := os.Open("sitemap.md")
if err != nil {
log.Fatal(err)
}
current, _ := ioutil.ReadAll(file)
file.Close()
file, err = os.Open("previous-sitemap.md")
if err != nil {
log.Fatal(err)
}
previous, _ := ioutil.ReadAll(file)
file.Close()
// If they're the same just log that all is good, if not warn that we need to update
if string(current) == string(previous) {
log.Infof("Current and previous sitemaps are the same, no need to update.\n")
} else {
log.Warnf("Current and previous sitemaps are not the same, you should update it.\n")
}
}
log.Printf("Done! Found %v groups and %v pages, see sitemap.md for the output", len(groups), pagesTotal)
}