#! /usr/bin/guile \
-e main -s
!#
(use-modules (sxml simple))
(define site-url "https://shittyweb.org")
;; Generate description from article file
(define (get-description file)
(call-with-input-file file
(lambda (fp)
(letrec ((read-characters
(lambda (fp)
(let ((character (read-char fp)))
(unless (eof-object? character)
(display character)
(read-characters fp))))))
(display "\n")))))
;; Generate rss item
(define (make-item article)
(let ((title (cadr (list-ref article 0)))
(name (cadr (list-ref article 2)))
(pub-date (cadr (list-ref article 4)))
(file (cadr (list-ref article 6))))
(format #t "\n - \n\
~a\n\
~a/blog#~a\n\
~a\n\
\n" title site-url name pub-date)
(get-description file)
(display " \n")
(display "
\n")))
;; Generate rss feed
(define (generate-feed)
;; Display the rss header
(format #t "\n\
\n\
\n\
Nathan's shitty blog\n\
The coffee powered blog of chaos\n\
~a/blog\n\
\n\
~a/images/icon.png\n\
Nathan's shitty blog\n\
~a/blog\n\
\n" site-url site-url site-url)
(call-with-input-file "articles.xml"
(lambda (fp)
(let ((articles (xml->sxml fp)))
(for-each (lambda (article)
(if (list? article)
(make-item (cddr article))))
(cdr (cadr articles))))))
(display " \n")
(display "\n"))
(define (main args)
(generate-feed))