Files
racket-wiki/private/config.rkt
T

78 lines
2.5 KiB
Racket

#lang racket/base
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Small runtime configuration and data-path helpers.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require racket/path
racket/runtime-path)
(provide (struct-out wiki-config)
make-wiki-config
default-wiki-config
static-directory
uploads-directory
deleted-directory
data-static-directory
vendor-directory
database-config-path
language-config-path)
(struct wiki-config (data-dir
port
listen-ip
secure-cookie?
site-title
session-seconds
language)
#:transparent)
(define-runtime-path static-directory "../static")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; goal : Create a wiki configuration.
; pre : data-dir is a path string, port is a port number and listen-ip is
; an IP address string, "*" or #f.
; post : No files or settings have been changed.
; result : A wiki-config value with a complete data directory path.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (make-wiki-config #:data-dir [data-dir "wiki-data"]
#:port [port 8080]
#:listen-ip [listen-ip "127.0.0.1"]
#:secure-cookie? [secure-cookie? #f]
#:site-title [site-title "Racket Wiki"]
#:session-seconds [session-seconds (* 12 60 60)]
#:language [language "en"])
(define normalized-listen-ip
(if (equal? listen-ip "*")
#f
listen-ip))
(wiki-config (path->complete-path data-dir)
port
normalized-listen-ip
secure-cookie?
site-title
session-seconds
language))
(define (default-wiki-config)
(make-wiki-config))
(define (uploads-directory config)
(build-path (wiki-config-data-dir config) "uploads"))
(define (deleted-directory config)
(build-path (wiki-config-data-dir config) "deleted"))
(define (data-static-directory config)
(build-path (wiki-config-data-dir config) "static"))
(define (vendor-directory config)
(build-path (data-static-directory config) "vendor"))
(define (database-config-path config)
(build-path (wiki-config-data-dir config) "database.rktd"))
(define (language-config-path config)
(build-path (wiki-config-data-dir config) "language.rktd"))