summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorGabriel Arazas <foo.dogsquared@gmail.com>2022-06-16 13:00:39 +0800
committerEfraim Flashner <efraim@flashner.co.il>2022-09-01 11:15:53 +0300
commit4a5fbadb88ff18bb7de87b351c6009aaa398a892 (patch)
tree54f0a8d1fdffa894741740408a06a25027ddb480 /gnu/packages
parent98707abda34e4f359e9ef1b82a548a667d4056ce (diff)
downloadguix-4a5fbadb88ff18bb7de87b351c6009aaa398a892.tar.gz
gnu: Add treefmt.
* gnu/packages/rust-apps.scm (treefmt): New variable.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/rust-apps.scm57
1 files changed, 57 insertions, 0 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 0d5034ffb7..f1dd5b9abd 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
+;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1129,6 +1130,62 @@ classic Web2C implementation of TeX and uses the TeXLive distribution
 of support files.")
     (license license:expat)))
 
+(define-public treefmt
+  (package
+    (name "treefmt")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "treefmt" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1rarg6rffzl1cf6r167h9p14wr696kwnzr85kwbdy7x7x5zpj5li"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:install-source? #f
+       #:cargo-inputs
+       (("rust-anyhow" ,rust-anyhow-1)
+        ("rust-console" ,rust-console-0.13)
+        ("rust-directories" ,rust-directories-3)
+        ("rust-filetime" ,rust-filetime-0.2)
+        ("rust-globset" ,rust-globset-0.4)
+        ("rust-ignore" ,rust-ignore-0.4)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-path-clean" ,rust-path-clean-0.1)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-sha-1" ,rust-sha-1-0.9)
+        ("rust-structopt" ,rust-structopt-0.3)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-which" ,rust-which-4))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3))))
+    (home-page "https://numtide.github.io/treefmt")
+    (synopsis "Command-line application to format the code tree")
+    (description
+     "This application provides a way to unify the formatting process of the
+codebase.  It is nice for large code trees where using multiple formatters are
+common.  @command{treefmt} comes with the following features.
+
+@itemize
+@item Unified CLI and output.
+@item Runs formatters in parallel.
+@item Cache changed files for performance.
+@end itemize
+
+The application does have some design decisions to keep in mind.
+
+@itemize
+@item The source code is kept under version control, making it possible to
+revert and check changes.
+@item Only one formatter per file, making outputs idempotent.
+@end itemize")
+    (license license:expat)))
+
 (define-public hex
   (package
     (name "hex")