summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2022-06-22 18:25:16 +0530
committerArun Isaac2022-06-22 20:46:17 +0530
commit89c6c8718bdd1a113e31e192d16bd0694d332b09 (patch)
treed2c72a7e0ec936ee949a8585a8afaae64f052b2a
parent32d5e62a222fc1c542758016325839cdc705cd28 (diff)
downloadtissue-89c6c8718bdd1a113e31e192d16bd0694d332b09.tar.gz
tissue-89c6c8718bdd1a113e31e192d16bd0694d332b09.tar.lz
tissue-89c6c8718bdd1a113e31e192d16bd0694d332b09.zip
bin: Run with the top-level directory as the current directory.
If we always run with the top-level directory as the current
directory, we don't need to frequently discover the top-level
directory by walking the filesystem. Also, this sits nicer with a
migration from git to libgit2.

* bin/tissue (main): Run all subcommands with the top-level directory
as the current directory.
(load-config): Load tissue.scm without appending the top-level
directory to it.
(tissue-web): Find the top-level directory using getcwd instead of
git-top-level.
-rwxr-xr-xbin/tissue36
1 files changed, 19 insertions, 17 deletions
diff --git a/bin/tissue b/bin/tissue
index 566a6ea..f323e20 100755
--- a/bin/tissue
+++ b/bin/tissue
@@ -355,7 +355,7 @@ Show the text of issue #ISSUE-NUMBER.
   (memoize-thunk
    (lambda ()
      "Load configuration and return <tissue-configuration> object."
-     (load (string-append (git-top-level) "/tissue.scm")))))
+     (load (canonicalize-path "tissue.scm")))))
 
 (define tissue-repl
   (match-lambda*
@@ -393,7 +393,7 @@ Export the repository as a website to OUTPUT-DIRECTORY.
      (parameterize ((%project-name (tissue-configuration-project (load-config)))
                     (%tags-path (tissue-configuration-web-tags-path
                                  (load-config))))
-       (build-website (git-top-level)
+       (build-website (getcwd)
                       output-directory
                       (tissue-configuration-web-css (load-config))
                       (tissue-configuration-web-files (load-config)))))))
@@ -428,21 +428,23 @@ To get usage information for one of these sub-commands, run
                          (current-error-port))
                 (newline (current-error-port))
                 (exit #f)))
-       (parameterize ((%issue-files (tissue-configuration-issue-files (load-config)))
-                      (%aliases (tissue-configuration-aliases (load-config))))
-         (apply (match command
-                  ("news" tissue-news)
-                  ("list" tissue-list)
-                  ("edit" tissue-edit)
-                  ("show" tissue-show)
-                  ("repl" tissue-repl)
-                  ("web" tissue-web)
-                  (invalid-command
-                   (format (current-error-port) "Invalid command `~a'~%~%"
-                           invalid-command)
-                   (print-usage)
-                   (exit #f)))
-                args))))
+       (call-with-current-directory (git-top-level)
+         (lambda ()
+           (parameterize ((%issue-files (tissue-configuration-issue-files (load-config)))
+                          (%aliases (tissue-configuration-aliases (load-config))))
+             (apply (match command
+                      ("news" tissue-news)
+                      ("list" tissue-list)
+                      ("edit" tissue-edit)
+                      ("show" tissue-show)
+                      ("repl" tissue-repl)
+                      ("web" tissue-web)
+                      (invalid-command
+                       (format (current-error-port) "Invalid command `~a'~%~%"
+                               invalid-command)
+                       (print-usage)
+                       (exit #f)))
+                    args))))))
     ;; tissue is an alias for `tissue list'
     ((_)
      (main "tissue" "list"))))