git: 738b46abedb0 - main - devel/treefmt: New port: One CLI to format the code tree

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sun, 01 Jan 2023 12:23:25 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=738b46abedb00ad73fb48bc25a77101ec3617330

commit 738b46abedb00ad73fb48bc25a77101ec3617330
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-01-01 12:22:58 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-01-01 12:23:23 +0000

    devel/treefmt: New port: One CLI to format the code tree
---
 devel/Makefile          |   1 +
 devel/treefmt/Makefile  | 132 +++++++++++++++++++++++++++++
 devel/treefmt/distinfo  | 221 ++++++++++++++++++++++++++++++++++++++++++++++++
 devel/treefmt/pkg-descr |  12 +++
 4 files changed, 366 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index b4e7c66caacf..a2d827fd2622 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -7405,6 +7405,7 @@
     SUBDIR += transient-devel
     SUBDIR += transwarp
     SUBDIR += tree-sitter
+    SUBDIR += treefmt
     SUBDIR += treepy.el
     SUBDIR += trellis
     SUBDIR += trio
diff --git a/devel/treefmt/Makefile b/devel/treefmt/Makefile
new file mode 100644
index 000000000000..6fcaeb22821f
--- /dev/null
+++ b/devel/treefmt/Makefile
@@ -0,0 +1,132 @@
+PORTNAME=	treefmt
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.5.0
+CATEGORIES=	devel
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	One CLI to format the code tree
+WWW=		https://numtide.github.io/treefmt/
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	numtide
+
+CARGO_CRATES=	aho-corasick-0.7.18 \
+		ansi_term-0.12.1 \
+		anyhow-1.0.57 \
+		atty-0.2.14 \
+		autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		block-buffer-0.9.0 \
+		bstr-0.2.17 \
+		bumpalo-3.9.1 \
+		cast-0.2.7 \
+		cfg-if-1.0.0 \
+		clap-2.34.0 \
+		console-0.13.0 \
+		cpufeatures-0.2.2 \
+		criterion-0.3.5 \
+		criterion-plot-0.4.4 \
+		crossbeam-channel-0.5.4 \
+		crossbeam-deque-0.8.1 \
+		crossbeam-epoch-0.9.8 \
+		crossbeam-utils-0.8.8 \
+		csv-1.1.6 \
+		csv-core-0.1.10 \
+		digest-0.9.0 \
+		directories-3.0.2 \
+		dirs-sys-0.3.7 \
+		either-1.6.1 \
+		encode_unicode-0.3.6 \
+		fastrand-1.7.0 \
+		filetime-0.2.16 \
+		fnv-1.0.7 \
+		generic-array-0.14.5 \
+		getrandom-0.2.6 \
+		globset-0.4.8 \
+		half-1.8.2 \
+		heck-0.3.3 \
+		hermit-abi-0.1.19 \
+		ignore-0.4.18 \
+		instant-0.1.12 \
+		itertools-0.10.3 \
+		itoa-0.4.8 \
+		itoa-1.0.1 \
+		js-sys-0.3.57 \
+		lazy_static-1.4.0 \
+		libc-0.2.125 \
+		log-0.4.16 \
+		memchr-2.5.0 \
+		memoffset-0.6.5 \
+		num-traits-0.2.14 \
+		num_cpus-1.13.1 \
+		once_cell-1.10.0 \
+		oorandom-11.1.3 \
+		opaque-debug-0.3.0 \
+		path-clean-0.1.0 \
+		plotters-0.3.1 \
+		plotters-backend-0.3.2 \
+		plotters-svg-0.3.1 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.37 \
+		quote-1.0.18 \
+		rayon-1.5.2 \
+		rayon-core-1.9.2 \
+		redox_syscall-0.2.13 \
+		redox_users-0.4.3 \
+		regex-1.5.5 \
+		regex-automata-0.1.10 \
+		regex-syntax-0.6.25 \
+		remove_dir_all-0.5.3 \
+		rustc_version-0.4.0 \
+		ryu-1.0.9 \
+		same-file-1.0.6 \
+		scopeguard-1.1.0 \
+		semver-1.0.9 \
+		serde-1.0.137 \
+		serde_cbor-0.11.2 \
+		serde_derive-1.0.137 \
+		serde_json-1.0.80 \
+		sha-1-0.9.8 \
+		strsim-0.8.0 \
+		structopt-0.3.26 \
+		structopt-derive-0.4.18 \
+		syn-1.0.92 \
+		tempfile-3.3.0 \
+		terminal_size-0.1.17 \
+		textwrap-0.11.0 \
+		thiserror-1.0.31 \
+		thiserror-impl-1.0.31 \
+		thread_local-1.1.4 \
+		tinytemplate-1.2.1 \
+		toml-0.5.9 \
+		typenum-1.15.0 \
+		unicode-segmentation-1.9.0 \
+		unicode-width-0.1.9 \
+		unicode-xid-0.2.3 \
+		vec_map-0.8.2 \
+		version_check-0.9.4 \
+		walkdir-2.3.2 \
+		wasi-0.10.2+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.80 \
+		wasm-bindgen-backend-0.2.80 \
+		wasm-bindgen-macro-0.2.80 \
+		wasm-bindgen-macro-support-0.2.80 \
+		wasm-bindgen-shared-0.2.80 \
+		web-sys-0.3.57 \
+		which-4.2.5 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0
+
+PLIST_FILES=	bin/${PORTNAME}
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/devel/treefmt/distinfo b/devel/treefmt/distinfo
new file mode 100644
index 000000000000..efaef6c2d89e
--- /dev/null
+++ b/devel/treefmt/distinfo
@@ -0,0 +1,221 @@
+TIMESTAMP = 1672575201
+SHA256 (rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
+SIZE (rust/crates/aho-corasick-0.7.18.crate) = 112923
+SHA256 (rust/crates/ansi_term-0.12.1.crate) = d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2
+SIZE (rust/crates/ansi_term-0.12.1.crate) = 24838
+SHA256 (rust/crates/anyhow-1.0.57.crate) = 08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc
+SIZE (rust/crates/anyhow-1.0.57.crate) = 44614
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/block-buffer-0.9.0.crate) = 4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
+SIZE (rust/crates/block-buffer-0.9.0.crate) = 7108
+SHA256 (rust/crates/bstr-0.2.17.crate) = ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223
+SIZE (rust/crates/bstr-0.2.17.crate) = 330350
+SHA256 (rust/crates/bumpalo-3.9.1.crate) = a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899
+SIZE (rust/crates/bumpalo-3.9.1.crate) = 77507
+SHA256 (rust/crates/cast-0.2.7.crate) = 4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a
+SIZE (rust/crates/cast-0.2.7.crate) = 11222
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clap-2.34.0.crate) = a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c
+SIZE (rust/crates/clap-2.34.0.crate) = 202210
+SHA256 (rust/crates/console-0.13.0.crate) = a50aab2529019abfabfa93f1e6c41ef392f91fbf179b347a7e96abb524884a08
+SIZE (rust/crates/console-0.13.0.crate) = 22451
+SHA256 (rust/crates/cpufeatures-0.2.2.crate) = 59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b
+SIZE (rust/crates/cpufeatures-0.2.2.crate) = 10655
+SHA256 (rust/crates/criterion-0.3.5.crate) = 1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10
+SIZE (rust/crates/criterion-0.3.5.crate) = 110662
+SHA256 (rust/crates/criterion-plot-0.4.4.crate) = d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57
+SIZE (rust/crates/criterion-plot-0.4.4.crate) = 22546
+SHA256 (rust/crates/crossbeam-channel-0.5.4.crate) = 5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53
+SIZE (rust/crates/crossbeam-channel-0.5.4.crate) = 88237
+SHA256 (rust/crates/crossbeam-deque-0.8.1.crate) = 6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e
+SIZE (rust/crates/crossbeam-deque-0.8.1.crate) = 20852
+SHA256 (rust/crates/crossbeam-epoch-0.9.8.crate) = 1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c
+SIZE (rust/crates/crossbeam-epoch-0.9.8.crate) = 46012
+SHA256 (rust/crates/crossbeam-utils-0.8.8.crate) = 0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38
+SIZE (rust/crates/crossbeam-utils-0.8.8.crate) = 39681
+SHA256 (rust/crates/csv-1.1.6.crate) = 22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1
+SIZE (rust/crates/csv-1.1.6.crate) = 886999
+SHA256 (rust/crates/csv-core-0.1.10.crate) = 2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90
+SIZE (rust/crates/csv-core-0.1.10.crate) = 25668
+SHA256 (rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (rust/crates/directories-3.0.2.crate) = e69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7
+SIZE (rust/crates/directories-3.0.2.crate) = 15593
+SHA256 (rust/crates/dirs-sys-0.3.7.crate) = 1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6
+SIZE (rust/crates/dirs-sys-0.3.7.crate) = 10597
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/encode_unicode-0.3.6.crate) = a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f
+SIZE (rust/crates/encode_unicode-0.3.6.crate) = 45741
+SHA256 (rust/crates/fastrand-1.7.0.crate) = c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf
+SIZE (rust/crates/fastrand-1.7.0.crate) = 11265
+SHA256 (rust/crates/filetime-0.2.16.crate) = c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c
+SIZE (rust/crates/filetime-0.2.16.crate) = 14502
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/generic-array-0.14.5.crate) = fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803
+SIZE (rust/crates/generic-array-0.14.5.crate) = 28915
+SHA256 (rust/crates/getrandom-0.2.6.crate) = 9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad
+SIZE (rust/crates/getrandom-0.2.6.crate) = 28043
+SHA256 (rust/crates/globset-0.4.8.crate) = 10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd
+SIZE (rust/crates/globset-0.4.8.crate) = 22886
+SHA256 (rust/crates/half-1.8.2.crate) = eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7
+SIZE (rust/crates/half-1.8.2.crate) = 41874
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/ignore-0.4.18.crate) = 713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d
+SIZE (rust/crates/ignore-0.4.18.crate) = 53174
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/itertools-0.10.3.crate) = a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3
+SIZE (rust/crates/itertools-0.10.3.crate) = 118661
+SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
+SIZE (rust/crates/itoa-0.4.8.crate) = 11926
+SHA256 (rust/crates/itoa-1.0.1.crate) = 1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35
+SIZE (rust/crates/itoa-1.0.1.crate) = 11059
+SHA256 (rust/crates/js-sys-0.3.57.crate) = 671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397
+SIZE (rust/crates/js-sys-0.3.57.crate) = 78605
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.125.crate) = 5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b
+SIZE (rust/crates/libc-0.2.125.crate) = 589236
+SHA256 (rust/crates/log-0.4.16.crate) = 6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8
+SIZE (rust/crates/log-0.4.16.crate) = 37758
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/memoffset-0.6.5.crate) = 5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce
+SIZE (rust/crates/memoffset-0.6.5.crate) = 7686
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/num_cpus-1.13.1.crate) = 19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1
+SIZE (rust/crates/num_cpus-1.13.1.crate) = 14752
+SHA256 (rust/crates/once_cell-1.10.0.crate) = 87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9
+SIZE (rust/crates/once_cell-1.10.0.crate) = 30414
+SHA256 (rust/crates/oorandom-11.1.3.crate) = 0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575
+SIZE (rust/crates/oorandom-11.1.3.crate) = 10068
+SHA256 (rust/crates/opaque-debug-0.3.0.crate) = 624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5
+SIZE (rust/crates/opaque-debug-0.3.0.crate) = 5767
+SHA256 (rust/crates/path-clean-0.1.0.crate) = ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd
+SIZE (rust/crates/path-clean-0.1.0.crate) = 4909
+SHA256 (rust/crates/plotters-0.3.1.crate) = 32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a
+SIZE (rust/crates/plotters-0.3.1.crate) = 8595577
+SHA256 (rust/crates/plotters-backend-0.3.2.crate) = d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c
+SIZE (rust/crates/plotters-backend-0.3.2.crate) = 13524
+SHA256 (rust/crates/plotters-svg-0.3.1.crate) = 521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9
+SIZE (rust/crates/plotters-svg-0.3.1.crate) = 7596
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro2-1.0.37.crate) = ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1
+SIZE (rust/crates/proc-macro2-1.0.37.crate) = 41378
+SHA256 (rust/crates/quote-1.0.18.crate) = a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1
+SIZE (rust/crates/quote-1.0.18.crate) = 28911
+SHA256 (rust/crates/rayon-1.5.2.crate) = fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221
+SIZE (rust/crates/rayon-1.5.2.crate) = 165456
+SHA256 (rust/crates/rayon-core-1.9.2.crate) = 9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4
+SIZE (rust/crates/rayon-core-1.9.2.crate) = 65221
+SHA256 (rust/crates/redox_syscall-0.2.13.crate) = 62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42
+SIZE (rust/crates/redox_syscall-0.2.13.crate) = 23759
+SHA256 (rust/crates/redox_users-0.4.3.crate) = b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b
+SIZE (rust/crates/redox_users-0.4.3.crate) = 15353
+SHA256 (rust/crates/regex-1.5.5.crate) = 1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286
+SIZE (rust/crates/regex-1.5.5.crate) = 238119
+SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
+SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
+SHA256 (rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (rust/crates/remove_dir_all-0.5.3.crate) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
+SIZE (rust/crates/remove_dir_all-0.5.3.crate) = 9184
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/ryu-1.0.9.crate) = 73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f
+SIZE (rust/crates/ryu-1.0.9.crate) = 48391
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/semver-1.0.9.crate) = 8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd
+SIZE (rust/crates/semver-1.0.9.crate) = 30843
+SHA256 (rust/crates/serde-1.0.137.crate) = 61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1
+SIZE (rust/crates/serde-1.0.137.crate) = 76182
+SHA256 (rust/crates/serde_cbor-0.11.2.crate) = 2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5
+SIZE (rust/crates/serde_cbor-0.11.2.crate) = 44570
+SHA256 (rust/crates/serde_derive-1.0.137.crate) = 1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be
+SIZE (rust/crates/serde_derive-1.0.137.crate) = 54831
+SHA256 (rust/crates/serde_json-1.0.80.crate) = f972498cf015f7c0746cac89ebe1d6ef10c293b94175a243a2d9442c163d9944
+SIZE (rust/crates/serde_json-1.0.80.crate) = 144439
+SHA256 (rust/crates/sha-1-0.9.8.crate) = 99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6
+SIZE (rust/crates/sha-1-0.9.8.crate) = 14029
+SHA256 (rust/crates/strsim-0.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/structopt-0.3.26.crate) = 0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10
+SIZE (rust/crates/structopt-0.3.26.crate) = 53798
+SHA256 (rust/crates/structopt-derive-0.4.18.crate) = dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0
+SIZE (rust/crates/structopt-derive-0.4.18.crate) = 20996
+SHA256 (rust/crates/syn-1.0.92.crate) = 7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52
+SIZE (rust/crates/syn-1.0.92.crate) = 236605
+SHA256 (rust/crates/tempfile-3.3.0.crate) = 5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4
+SIZE (rust/crates/tempfile-3.3.0.crate) = 27578
+SHA256 (rust/crates/terminal_size-0.1.17.crate) = 633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df
+SIZE (rust/crates/terminal_size-0.1.17.crate) = 9141
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thiserror-1.0.31.crate) = bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a
+SIZE (rust/crates/thiserror-1.0.31.crate) = 18013
+SHA256 (rust/crates/thiserror-impl-1.0.31.crate) = 0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a
+SIZE (rust/crates/thiserror-impl-1.0.31.crate) = 15283
+SHA256 (rust/crates/thread_local-1.1.4.crate) = 5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180
+SIZE (rust/crates/thread_local-1.1.4.crate) = 13106
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/toml-0.5.9.crate) = 8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7
+SIZE (rust/crates/toml-0.5.9.crate) = 55667
+SHA256 (rust/crates/typenum-1.15.0.crate) = dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987
+SIZE (rust/crates/typenum-1.15.0.crate) = 40741
+SHA256 (rust/crates/unicode-segmentation-1.9.0.crate) = 7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99
+SIZE (rust/crates/unicode-segmentation-1.9.0.crate) = 93241
+SHA256 (rust/crates/unicode-width-0.1.9.crate) = 3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973
+SIZE (rust/crates/unicode-width-0.1.9.crate) = 16745
+SHA256 (rust/crates/unicode-xid-0.2.3.crate) = 957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04
+SIZE (rust/crates/unicode-xid-0.2.3.crate) = 15174
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/walkdir-2.3.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
+SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
+SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (rust/crates/wasm-bindgen-0.2.80.crate) = 27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad
+SIZE (rust/crates/wasm-bindgen-0.2.80.crate) = 164576
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.80.crate) = 53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4
+SIZE (rust/crates/wasm-bindgen-backend-0.2.80.crate) = 25741
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.80.crate) = 17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5
+SIZE (rust/crates/wasm-bindgen-macro-0.2.80.crate) = 11805
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.80.crate) = 99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.80.crate) = 17857
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.80.crate) = d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744
+SIZE (rust/crates/wasm-bindgen-shared-0.2.80.crate) = 7204
+SHA256 (rust/crates/web-sys-0.3.57.crate) = 7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283
+SIZE (rust/crates/web-sys-0.3.57.crate) = 686563
+SHA256 (rust/crates/which-4.2.5.crate) = 5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae
+SIZE (rust/crates/which-4.2.5.crate) = 9326
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (numtide-treefmt-v0.5.0_GH0.tar.gz) = 2ba130f4920b45409efb7d939c21d9a9d4640d46f76a5ede13e2bb01725670c8
+SIZE (numtide-treefmt-v0.5.0_GH0.tar.gz) = 62685
diff --git a/devel/treefmt/pkg-descr b/devel/treefmt/pkg-descr
new file mode 100644
index 000000000000..2f32a5c6ab99
--- /dev/null
+++ b/devel/treefmt/pkg-descr
@@ -0,0 +1,12 @@
+treefmt - one CLI to format the code tree.
+
+When working on large code trees, it's common to have multiple code formatters
+run against it. And have one script that loops over all of them. treefmt makes
+that nicer.
+
+Features:
+* A unified CLI and output
+* Run all the formatters in parallel.
+* Cache which files have changed for super fast re-formatting.
+
+Just type treefmt in any folder and it reformats the whole code tree.