32 lines
702 B
Racket
32 lines
702 B
Racket
#!/usr/bin/racket
|
|
|
|
#lang racket/base
|
|
|
|
(require racket/match)
|
|
(require racket/port)
|
|
(require net/url)
|
|
|
|
(define calendars
|
|
'())
|
|
|
|
(define (main)
|
|
(for ([calendar-info calendars])
|
|
(match-define [cons name calendar-link] calendar-info)
|
|
(define url (string->url calendar-link))
|
|
(define data (port->bytes (get-pure-port url)))
|
|
(define out-filename (format "~a.ics" name))
|
|
|
|
(when (file-exists? out-filename)
|
|
(delete-file out-filename))
|
|
|
|
(call-with-output-file out-filename
|
|
(lambda (out)
|
|
(parameterize ([current-output-port out])
|
|
(write-bytes data))))
|
|
|
|
(displayln (format "finished writing to ~s" out-filename))
|
|
|
|
(void)))
|
|
|
|
(module+ main
|
|
(main))
|