(module download-sqlite mzscheme
(require (lib "url.ss" "net")
(lib "port.ss")
(lib "file.ss")
(planet "unzip.ss" ("dherman" "zip.plt")))
(define FORCE-DOWNLOAD-OF-SQLITE-DLL? (make-parameter #f))
(define FILENAME-FOR-SQLITE-DLL (make-parameter "libsqlite3.dll"))
(define WINDOWS-DLL-ZIP-URL
(make-parameter
(string->url
"http://www.sqlite.org/sqlitedll-3_3_2.zip"
)))
(define (download-sqlite)
(define temp "temporary-dir-to-download-sqlite")
(when (or (not (file-exists? (FILENAME-FOR-SQLITE-DLL)))
(FORCE-DOWNLOAD-OF-SQLITE-DLL?))
(make-directory* temp)
(current-directory temp)
(let ([in-port (get-pure-port (WINDOWS-DLL-ZIP-URL))])
(call-with-output-file "sqlite.zip"
(lambda (out-port)
(copy-port in-port out-port))
'replace)
(close-input-port in-port))
(when (directory-exists? temp)
(delete-directory/files temp))
(call-with-input-file "sqlite.zip"
(lambda (in-port)
(unzip in-port)))
(call-with-input-file "sqlite3.dll"
(lambda (in)
(call-with-output-file* (build-path ".." (FILENAME-FOR-SQLITE-DLL))
(lambda (out)
(copy-port in out))
'replace)))
(current-directory "..")
(delete-directory/files temp)))
(download-sqlite))