diff options
author | Arun Isaac | 2025-03-25 19:45:24 +0000 |
---|---|---|
committer | Arun Isaac | 2025-03-25 22:17:04 +0000 |
commit | 03aaffde5d0448e4bd5aa83b33bfebc747ec0891 (patch) | |
tree | f964bef54f3191f27d862d2addd97f1395af0ec4 | |
parent | 8c24785190ed8f4c1426b4d04bf8db3f50283458 (diff) | |
download | tissue-03aaffde5d0448e4bd5aa83b33bfebc747ec0891.tar.gz tissue-03aaffde5d0448e4bd5aa83b33bfebc747ec0891.tar.lz tissue-03aaffde5d0448e4bd5aa83b33bfebc747ec0891.zip |
bin: Spin out hosts normalization into separate function.
* bin/tissue (tissue-web): Spin out hosts normalization into ...
(normalize-host): ... new function.
-rwxr-xr-x | bin/tissue | 44 |
1 files changed, 25 insertions, 19 deletions
@@ -242,6 +242,28 @@ port." socket-or-port) (make-tcp-server-socket #:port socket-or-port))))) +(define (normalize-host state-directory host) + "Normalize @var{host} from @file{tissue.conf} adding in default and +extra parameters for convenient processing later on. +@var{state-directory} is the tissue state directory." + (match-lambda + ((name . parameters) + ;; Add repository directory, website directory, xapian directory + ;; settings for each host. + (let ((repository-directory + (string-append state-directory "/" name "/repository"))) + (parameterize ((%current-git-repository + (repository-open repository-directory))) + (cons name + `((project . ,(call-with-temporary-checkout repository-directory + (lambda (temporary-checkout) + (call-with-current-directory temporary-checkout + load-config)))) + (repository-directory . ,repository-directory) + (website-directory . ,(string-append state-directory "/" name "/website")) + (xapian-directory . ,(string-append state-directory "/" name "/xapian")) + ,@parameters))))))) + (define tissue-web (match-lambda* (("--help") @@ -267,25 +289,9 @@ Serve repositories specified in CONFIG-FILE over HTTP. (when (assq-ref args 'listen-repl) (start-repl (assq-ref args 'listen-repl))) (start-web-server (listen->socket-address (assq-ref args 'listen)) - (map (match-lambda - ((name parameters ...) - ;; Add repository directory, website - ;; directory, xapian directory - ;; settings for each host. - (let* ((state-directory (assq-ref args 'state-directory)) - (repository-directory - (string-append state-directory "/" name "/repository"))) - (parameterize ((%current-git-repository - (repository-open repository-directory))) - (cons name - `((project . ,(call-with-temporary-checkout repository-directory - (lambda (temporary-checkout) - (call-with-current-directory temporary-checkout - load-config)))) - (repository-directory . ,repository-directory) - (website-directory . ,(string-append state-directory "/" name "/website")) - (xapian-directory . ,(string-append state-directory "/" name "/xapian")) - ,@parameters)))))) + (map (cut normalize-host + (assq-ref args 'state-directory) + <>) (assq-ref args 'hosts))))))) (define tissue-web-dev |