From 9e5dffc1f87d5e038f840bdc43e81b74f511bdaf Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 23 Jan 2023 19:18:08 +0000 Subject: web: Change to temporary clone before building website. * tissue/web/static.scm (build-website): Expect to be at the top level of the repository to be exported. * bin/tissue (pull): Create a temporary clone of the repository and change to it before calling build-website. --- tissue/web/static.scm | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) (limited to 'tissue') diff --git a/tissue/web/static.scm b/tissue/web/static.scm index 97e02be..2b910cb 100644 --- a/tissue/web/static.scm +++ b/tissue/web/static.scm @@ -119,10 +119,10 @@ stylesheet is included in the generated web pages." (evaluate-ast-from-port in #:reader reader) engine))))) -(define* (build-website repository-top-level output-directory files +(define* (build-website output-directory files #:key (log-port (current-error-port))) - "Export git repository with REPOSITORY-TOP-LEVEL to OUTPUT-DIRECTORY -as a website. + "Export git repository to OUTPUT-DIRECTORY as a website. The current +directory must be the top level of the repository being exported. FILES is a list of objects representing files to be written to the web output. @@ -132,18 +132,13 @@ Log to LOG-PORT. When LOG-PORT is #f, do not log." (make-directories output-directory) ;; Move into a temporary clone of the git repository, and write each ;; of the objects. - (call-with-temporary-directory - (lambda (temporary-repository-clone) - (clone repository-top-level temporary-repository-clone) - (for-each (lambda (file) - (let ((output-file - (string-append output-directory "/" (file-name file)))) - (when log-port - (display (file-name file) log-port) - (newline log-port)) - (make-directories (dirname output-file)) - (call-with-output-file output-file - (lambda (port) - (call-with-current-directory temporary-repository-clone - (cut (file-writer file) port)))))) - files)))) + (for-each (lambda (file) + (let ((output-file + (string-append output-directory "/" (file-name file)))) + (when log-port + (display (file-name file) log-port) + (newline log-port)) + (make-directories (dirname output-file)) + (call-with-output-file output-file + (cut (file-writer file) <>)))) + files)) -- cgit v1.2.3