#!/usr/bin/env gosh

(use gauche.process)
(use srfi-13)
(use srfi-19)
(use file.util)

(define url "https://ilztalbahn.eu/wp-content/uploads/2020/07/gtfs.zip")
(define cachefile "/tmp/urlwatch-cache")
(define storagedir "/var/lib/urlwatch-ilztal")

(do-process `(mkdir "-p" ,storagedir))

(define (get-hash url)
  (string-trim-both
   (process-output->string `((curl ,url)
                             (sha256sum)))))

(define hash
  (get-hash url))

(define pretty-date
  (date->string (time-utc->date (current-time)) "~5"))

(define (hash-did-change oldhash newhash)
  (print (format "the url's hash has changed to ~s!" newhash))
  (let ([newfile (string-append storagedir "/" newhash)])
    (do-process `(curl ,url "-o" ,newfile))
    (let  ( ;[diff (if oldhash
            ;        (let ([oldfile (string-append storagedir "/" oldhash)])
            ;          (process-output->string `(zipcmp ,oldfile ,newfile)))
           ;"")]
           )
      (do-pipeline `((echo ,(format "

Neuer hash ist ~a
Link ist ~a


(~a)

" newhash url pretty-date))
                     (mail "-s" "Ilztalbahn GTFS Update"
                           "stuebinm@disroot.org"
                           "-a" "From: trainspotter@flora.stuebinm.eu")))
      (sexp-list->file
       cachefile
       (list (list pretty-date newhash))
       :if-exists :append))))

(if (file-is-writable? cachefile)
    (let ([oldhash (cadr (last (file->sexp-list cachefile)))])
      (if (equal? (cadr (last (file->sexp-list cachefile))) hash)
          (print (format "url did not change, hash remains ~a" hash))
          (hash-did-change oldhash hash)))
    (hash-did-change #f hash))