git: d46223482500 - main - sysutils/tailspin: add port: Log file highlighter

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Sat, 11 Nov 2023 11:03:52 UTC
The branch main has been updated by tagattie:

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

commit d462234825004eb769f2041b0db9f54e0b3402db
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2023-11-11 11:01:26 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2023-11-11 11:03:38 +0000

    sysutils/tailspin: add port: Log file highlighter
    
    tailspin works by reading through a log file line by line, running a
    series of regexes against each line. The regexes recognize patterns
    like dates, numbers, severity keywords and more.
    
    tailspin does not make any assumptions on the format or position of
    the items it wants to highlight. For this reason, it requires no
    configuration or setup and will work predictably regardless of the
    format the log file is in.
    
    WWW: https://github.com/bensadeh/tailspin
---
 sysutils/Makefile                 |   1 +
 sysutils/tailspin/Makefile        |  45 ++++++
 sysutils/tailspin/Makefile.crates | 142 +++++++++++++++++++
 sysutils/tailspin/distinfo        | 287 ++++++++++++++++++++++++++++++++++++++
 sysutils/tailspin/pkg-descr       |   8 ++
 5 files changed, 483 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 7d567cb16adf..521a85089778 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1413,6 +1413,7 @@
     SUBDIR += sysvbanner
     SUBDIR += szyszka
     SUBDIR += tai64nfrac
+    SUBDIR += tailspin
     SUBDIR += tarsnap
     SUBDIR += tarsnap-gui
     SUBDIR += tarsnap-periodic
diff --git a/sysutils/tailspin/Makefile b/sysutils/tailspin/Makefile
new file mode 100644
index 000000000000..1e1c04a1b89f
--- /dev/null
+++ b/sysutils/tailspin/Makefile
@@ -0,0 +1,45 @@
+PORTNAME=	tailspin
+DISTVERSION=	2.0.0
+CATEGORIES=	sysutils
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Log file highlighter
+WWW=		https://github.com/bensadeh/tailspin
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENCE
+
+USES=		cargo
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	bensadeh
+
+PLIST_FILES=	bin/tspin \
+		etc/bash_completion.d/tspin \
+		share/fish/completions/tspin.fish \
+		share/man/man1/tspin.1.gz \
+		share/zsh/site-functions/_tspin
+
+PORTDOCS=	CHANGELOG.md README.md
+
+OPTIONS_DEFINE=	DOCS
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/tspin
+	${INSTALL_MAN} ${WRKSRC}/man/tspin.1 \
+		${STAGEDIR}${MANPREFIX}/share/man/man1
+	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d
+	${INSTALL_DATA} ${WRKSRC}/completions/tspin.bash \
+		${STAGEDIR}${PREFIX}/etc/bash_completion.d/tspin
+	@${MKDIR} ${STAGEDIR}${PREFIX}/share/fish/completions
+	${INSTALL_DATA} ${WRKSRC}/completions/tspin.fish \
+		${STAGEDIR}${PREFIX}/share/fish/completions/tspin.fish
+	@${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${WRKSRC}/completions/tspin.zsh \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_tspin
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/tailspin/Makefile.crates b/sysutils/tailspin/Makefile.crates
new file mode 100644
index 000000000000..d69e78402339
--- /dev/null
+++ b/sysutils/tailspin/Makefile.crates
@@ -0,0 +1,142 @@
+CARGO_CRATES=	addr2line-0.20.0 \
+		adler-1.0.2 \
+		aho-corasick-1.0.2 \
+		anstream-0.6.4 \
+		anstyle-1.0.1 \
+		anstyle-parse-0.2.1 \
+		anstyle-query-1.0.0 \
+		anstyle-wincon-3.0.1 \
+		async-trait-0.1.74 \
+		autocfg-1.1.0 \
+		backtrace-0.3.68 \
+		bitflags-1.3.2 \
+		bitflags-2.4.1 \
+		bytes-1.4.0 \
+		cc-1.0.79 \
+		cfg-if-1.0.0 \
+		clap-4.4.7 \
+		clap_builder-4.4.7 \
+		clap_complete-4.4.4 \
+		clap_derive-4.4.7 \
+		clap_lex-0.6.0 \
+		color-eyre-0.6.2 \
+		color-spantrace-0.2.0 \
+		colorchoice-1.0.0 \
+		colored-2.0.4 \
+		crossbeam-channel-0.5.8 \
+		crossbeam-utils-0.8.16 \
+		ctrlc-3.4.1 \
+		dirs-5.0.1 \
+		dirs-sys-0.4.1 \
+		equivalent-1.0.0 \
+		errno-0.3.1 \
+		errno-dragonfly-0.1.2 \
+		eyre-0.6.8 \
+		fastrand-2.0.0 \
+		filetime-0.2.21 \
+		futures-core-0.3.28 \
+		futures-task-0.3.28 \
+		futures-util-0.3.28 \
+		getrandom-0.2.10 \
+		gimli-0.27.3 \
+		hashbrown-0.14.0 \
+		heck-0.4.1 \
+		hermit-abi-0.2.6 \
+		hermit-abi-0.3.1 \
+		indenter-0.3.3 \
+		indexmap-2.0.0 \
+		inotify-0.9.6 \
+		inotify-sys-0.1.5 \
+		is-terminal-0.4.8 \
+		kqueue-1.0.7 \
+		kqueue-sys-1.0.3 \
+		lazy_static-1.4.0 \
+		libc-0.2.149 \
+		linemux-0.3.0 \
+		linux-raw-sys-0.4.10 \
+		lock_api-0.4.10 \
+		log-0.4.19 \
+		memchr-2.6.3 \
+		miniz_oxide-0.7.1 \
+		mio-0.8.8 \
+		nix-0.27.1 \
+		notify-5.2.0 \
+		num_cpus-1.15.0 \
+		object-0.31.1 \
+		once_cell-1.18.0 \
+		option-ext-0.2.0 \
+		owo-colors-3.5.0 \
+		parking_lot-0.12.1 \
+		parking_lot_core-0.9.8 \
+		pin-project-lite-0.2.12 \
+		pin-utils-0.1.0 \
+		ppv-lite86-0.2.17 \
+		proc-macro2-1.0.64 \
+		quote-1.0.30 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.2.16 \
+		redox_syscall-0.3.5 \
+		redox_syscall-0.4.1 \
+		redox_users-0.4.3 \
+		regex-1.10.2 \
+		regex-automata-0.4.3 \
+		regex-syntax-0.8.2 \
+		rustc-demangle-0.1.23 \
+		rustix-0.38.21 \
+		same-file-1.0.6 \
+		scopeguard-1.1.0 \
+		serde-1.0.190 \
+		serde_derive-1.0.190 \
+		serde_spanned-0.6.4 \
+		sharded-slab-0.1.4 \
+		shellexpand-3.1.0 \
+		signal-hook-registry-1.4.1 \
+		slab-0.4.8 \
+		smallvec-1.10.0 \
+		socket2-0.5.3 \
+		strsim-0.10.0 \
+		syn-2.0.28 \
+		tempfile-3.8.1 \
+		terminal_size-0.3.0 \
+		thiserror-1.0.40 \
+		thiserror-impl-1.0.40 \
+		thread_local-1.1.7 \
+		tokio-1.33.0 \
+		tokio-macros-2.1.0 \
+		toml-0.8.6 \
+		toml_datetime-0.6.5 \
+		toml_edit-0.20.7 \
+		tracing-0.1.37 \
+		tracing-core-0.1.31 \
+		tracing-error-0.2.0 \
+		tracing-subscriber-0.3.17 \
+		unicode-ident-1.0.9 \
+		utf8parse-0.2.1 \
+		valuable-0.1.0 \
+		walkdir-2.3.3 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		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 \
+		windows-sys-0.45.0 \
+		windows-sys-0.48.0 \
+		windows-targets-0.42.2 \
+		windows-targets-0.48.0 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.48.0 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.48.0 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.48.0 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.48.0 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.48.0 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.48.0 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.48.0 \
+		winnow-0.5.15
diff --git a/sysutils/tailspin/distinfo b/sysutils/tailspin/distinfo
new file mode 100644
index 000000000000..ac38cafaa6f7
--- /dev/null
+++ b/sysutils/tailspin/distinfo
@@ -0,0 +1,287 @@
+TIMESTAMP = 1699650095
+SHA256 (rust/crates/addr2line-0.20.0.crate) = f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3
+SIZE (rust/crates/addr2line-0.20.0.crate) = 39558
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/aho-corasick-1.0.2.crate) = 43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41
+SIZE (rust/crates/aho-corasick-1.0.2.crate) = 167694
+SHA256 (rust/crates/anstream-0.6.4.crate) = 2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44
+SIZE (rust/crates/anstream-0.6.4.crate) = 20593
+SHA256 (rust/crates/anstyle-1.0.1.crate) = 3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd
+SIZE (rust/crates/anstyle-1.0.1.crate) = 13977
+SHA256 (rust/crates/anstyle-parse-0.2.1.crate) = 938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333
+SIZE (rust/crates/anstyle-parse-0.2.1.crate) = 24802
+SHA256 (rust/crates/anstyle-query-1.0.0.crate) = 5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b
+SIZE (rust/crates/anstyle-query-1.0.0.crate) = 8620
+SHA256 (rust/crates/anstyle-wincon-3.0.1.crate) = f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628
+SIZE (rust/crates/anstyle-wincon-3.0.1.crate) = 11279
+SHA256 (rust/crates/async-trait-0.1.74.crate) = a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9
+SIZE (rust/crates/async-trait-0.1.74.crate) = 28997
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/backtrace-0.3.68.crate) = 4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12
+SIZE (rust/crates/backtrace-0.3.68.crate) = 79891
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.4.1.crate) = 327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07
+SIZE (rust/crates/bitflags-2.4.1.crate) = 37043
+SHA256 (rust/crates/bytes-1.4.0.crate) = 89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be
+SIZE (rust/crates/bytes-1.4.0.crate) = 58080
+SHA256 (rust/crates/cc-1.0.79.crate) = 50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f
+SIZE (rust/crates/cc-1.0.79.crate) = 62624
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clap-4.4.7.crate) = ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b
+SIZE (rust/crates/clap-4.4.7.crate) = 54408
+SHA256 (rust/crates/clap_builder-4.4.7.crate) = c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663
+SIZE (rust/crates/clap_builder-4.4.7.crate) = 162516
+SHA256 (rust/crates/clap_complete-4.4.4.crate) = bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae
+SIZE (rust/crates/clap_complete-4.4.4.crate) = 37405
+SHA256 (rust/crates/clap_derive-4.4.7.crate) = cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442
+SIZE (rust/crates/clap_derive-4.4.7.crate) = 29046
+SHA256 (rust/crates/clap_lex-0.6.0.crate) = 702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1
+SIZE (rust/crates/clap_lex-0.6.0.crate) = 12272
+SHA256 (rust/crates/color-eyre-0.6.2.crate) = 5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204
+SIZE (rust/crates/color-eyre-0.6.2.crate) = 635042
+SHA256 (rust/crates/color-spantrace-0.2.0.crate) = 1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce
+SIZE (rust/crates/color-spantrace-0.2.0.crate) = 185098
+SHA256 (rust/crates/colorchoice-1.0.0.crate) = acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7
+SIZE (rust/crates/colorchoice-1.0.0.crate) = 6857
+SHA256 (rust/crates/colored-2.0.4.crate) = 2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6
+SIZE (rust/crates/colored-2.0.4.crate) = 23654
+SHA256 (rust/crates/crossbeam-channel-0.5.8.crate) = a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200
+SIZE (rust/crates/crossbeam-channel-0.5.8.crate) = 90455
+SHA256 (rust/crates/crossbeam-utils-0.8.16.crate) = 5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294
+SIZE (rust/crates/crossbeam-utils-0.8.16.crate) = 42508
+SHA256 (rust/crates/ctrlc-3.4.1.crate) = 82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf
+SIZE (rust/crates/ctrlc-3.4.1.crate) = 14191
+SHA256 (rust/crates/dirs-5.0.1.crate) = 44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225
+SIZE (rust/crates/dirs-5.0.1.crate) = 12255
+SHA256 (rust/crates/dirs-sys-0.4.1.crate) = 520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c
+SIZE (rust/crates/dirs-sys-0.4.1.crate) = 10719
+SHA256 (rust/crates/equivalent-1.0.0.crate) = 88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1
+SIZE (rust/crates/equivalent-1.0.0.crate) = 6621
+SHA256 (rust/crates/errno-0.3.1.crate) = 4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a
+SIZE (rust/crates/errno-0.3.1.crate) = 10348
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/eyre-0.6.8.crate) = 4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb
+SIZE (rust/crates/eyre-0.6.8.crate) = 41587
+SHA256 (rust/crates/fastrand-2.0.0.crate) = 6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764
+SIZE (rust/crates/fastrand-2.0.0.crate) = 14402
+SHA256 (rust/crates/filetime-0.2.21.crate) = 5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153
+SIZE (rust/crates/filetime-0.2.21.crate) = 15026
+SHA256 (rust/crates/futures-core-0.3.28.crate) = 4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c
+SIZE (rust/crates/futures-core-0.3.28.crate) = 14780
+SHA256 (rust/crates/futures-task-0.3.28.crate) = 76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65
+SIZE (rust/crates/futures-task-0.3.28.crate) = 11848
+SHA256 (rust/crates/futures-util-0.3.28.crate) = 26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533
+SIZE (rust/crates/futures-util-0.3.28.crate) = 158510
+SHA256 (rust/crates/getrandom-0.2.10.crate) = be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427
+SIZE (rust/crates/getrandom-0.2.10.crate) = 34955
+SHA256 (rust/crates/gimli-0.27.3.crate) = b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e
+SIZE (rust/crates/gimli-0.27.3.crate) = 287904
+SHA256 (rust/crates/hashbrown-0.14.0.crate) = 2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a
+SIZE (rust/crates/hashbrown-0.14.0.crate) = 116103
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.2.6.crate) = ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7
+SIZE (rust/crates/hermit-abi-0.2.6.crate) = 13027
+SHA256 (rust/crates/hermit-abi-0.3.1.crate) = fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286
+SIZE (rust/crates/hermit-abi-0.3.1.crate) = 13793
+SHA256 (rust/crates/indenter-0.3.3.crate) = ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683
+SIZE (rust/crates/indenter-0.3.3.crate) = 6587
+SHA256 (rust/crates/indexmap-2.0.0.crate) = d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d
+SIZE (rust/crates/indexmap-2.0.0.crate) = 64038
+SHA256 (rust/crates/inotify-0.9.6.crate) = f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff
+SIZE (rust/crates/inotify-0.9.6.crate) = 22971
+SHA256 (rust/crates/inotify-sys-0.1.5.crate) = e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb
+SIZE (rust/crates/inotify-sys-0.1.5.crate) = 6965
+SHA256 (rust/crates/is-terminal-0.4.8.crate) = 24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb
+SIZE (rust/crates/is-terminal-0.4.8.crate) = 8103
+SHA256 (rust/crates/kqueue-1.0.7.crate) = 2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98
+SIZE (rust/crates/kqueue-1.0.7.crate) = 12554
+SHA256 (rust/crates/kqueue-sys-1.0.3.crate) = 8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587
+SIZE (rust/crates/kqueue-sys-1.0.3.crate) = 6673
+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.149.crate) = a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b
+SIZE (rust/crates/libc-0.2.149.crate) = 715592
+SHA256 (rust/crates/linemux-0.3.0.crate) = feb035c7806bd7982a317d8d66815021e91f7ab14a5fbedee22b06f608f11b43
+SIZE (rust/crates/linemux-0.3.0.crate) = 23128
+SHA256 (rust/crates/linux-raw-sys-0.4.10.crate) = da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f
+SIZE (rust/crates/linux-raw-sys-0.4.10.crate) = 1407767
+SHA256 (rust/crates/lock_api-0.4.10.crate) = c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16
+SIZE (rust/crates/lock_api-0.4.10.crate) = 26713
+SHA256 (rust/crates/log-0.4.19.crate) = b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4
+SIZE (rust/crates/log-0.4.19.crate) = 38073
+SHA256 (rust/crates/memchr-2.6.3.crate) = 8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c
+SIZE (rust/crates/memchr-2.6.3.crate) = 94377
+SHA256 (rust/crates/miniz_oxide-0.7.1.crate) = e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7
+SIZE (rust/crates/miniz_oxide-0.7.1.crate) = 55194
+SHA256 (rust/crates/mio-0.8.8.crate) = 927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2
+SIZE (rust/crates/mio-0.8.8.crate) = 94264
+SHA256 (rust/crates/nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053
+SIZE (rust/crates/nix-0.27.1.crate) = 286494
+SHA256 (rust/crates/notify-5.2.0.crate) = 729f63e1ca555a43fe3efa4f3efdf4801c479da85b432242a7b726f353c88486
+SIZE (rust/crates/notify-5.2.0.crate) = 37297
+SHA256 (rust/crates/num_cpus-1.15.0.crate) = 0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b
+SIZE (rust/crates/num_cpus-1.15.0.crate) = 15680
+SHA256 (rust/crates/object-0.31.1.crate) = 8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1
+SIZE (rust/crates/object-0.31.1.crate) = 272843
+SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d
+SIZE (rust/crates/once_cell-1.18.0.crate) = 32969
+SHA256 (rust/crates/option-ext-0.2.0.crate) = 04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d
+SIZE (rust/crates/option-ext-0.2.0.crate) = 7345
+SHA256 (rust/crates/owo-colors-3.5.0.crate) = c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f
+SIZE (rust/crates/owo-colors-3.5.0.crate) = 30310
+SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
+SIZE (rust/crates/parking_lot-0.12.1.crate) = 40967
+SHA256 (rust/crates/parking_lot_core-0.9.8.crate) = 93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447
+SIZE (rust/crates/parking_lot_core-0.9.8.crate) = 32383
+SHA256 (rust/crates/pin-project-lite-0.2.12.crate) = 12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05
+SIZE (rust/crates/pin-project-lite-0.2.12.crate) = 29073
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/proc-macro2-1.0.64.crate) = 78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da
+SIZE (rust/crates/proc-macro2-1.0.64.crate) = 44848
+SHA256 (rust/crates/quote-1.0.30.crate) = 5907a1b7c277254a8b15170f6e7c97cfa60ee7872a3217663bb81151e48184bb
+SIZE (rust/crates/quote-1.0.30.crate) = 28386
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/redox_syscall-0.2.16.crate) = fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a
+SIZE (rust/crates/redox_syscall-0.2.16.crate) = 24012
+SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29
+SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404
+SHA256 (rust/crates/redox_syscall-0.4.1.crate) = 4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa
+SIZE (rust/crates/redox_syscall-0.4.1.crate) = 24858
+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.10.2.crate) = 380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343
+SIZE (rust/crates/regex-1.10.2.crate) = 252839
+SHA256 (rust/crates/regex-automata-0.4.3.crate) = 5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f
+SIZE (rust/crates/regex-automata-0.4.3.crate) = 617011
+SHA256 (rust/crates/regex-syntax-0.8.2.crate) = c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f
+SIZE (rust/crates/regex-syntax-0.8.2.crate) = 347228
+SHA256 (rust/crates/rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76
+SIZE (rust/crates/rustc-demangle-0.1.23.crate) = 28970
+SHA256 (rust/crates/rustix-0.38.21.crate) = 2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3
+SIZE (rust/crates/rustix-0.38.21.crate) = 358962
+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/serde-1.0.190.crate) = 91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7
+SIZE (rust/crates/serde-1.0.190.crate) = 76455
+SHA256 (rust/crates/serde_derive-1.0.190.crate) = 67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3
+SIZE (rust/crates/serde_derive-1.0.190.crate) = 55676
+SHA256 (rust/crates/serde_spanned-0.6.4.crate) = 12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80
+SIZE (rust/crates/serde_spanned-0.6.4.crate) = 7756
+SHA256 (rust/crates/sharded-slab-0.1.4.crate) = 900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31
+SIZE (rust/crates/sharded-slab-0.1.4.crate) = 52479
+SHA256 (rust/crates/shellexpand-3.1.0.crate) = da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b
+SIZE (rust/crates/shellexpand-3.1.0.crate) = 25591
+SHA256 (rust/crates/signal-hook-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1
+SIZE (rust/crates/signal-hook-registry-1.4.1.crate) = 17987
+SHA256 (rust/crates/slab-0.4.8.crate) = 6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d
+SIZE (rust/crates/slab-0.4.8.crate) = 16928
+SHA256 (rust/crates/smallvec-1.10.0.crate) = a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0
+SIZE (rust/crates/smallvec-1.10.0.crate) = 31564
+SHA256 (rust/crates/socket2-0.5.3.crate) = 2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877
+SIZE (rust/crates/socket2-0.5.3.crate) = 52588
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/syn-2.0.28.crate) = 04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567
+SIZE (rust/crates/syn-2.0.28.crate) = 241635
+SHA256 (rust/crates/tempfile-3.8.1.crate) = 7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5
+SIZE (rust/crates/tempfile-3.8.1.crate) = 32164
+SHA256 (rust/crates/terminal_size-0.3.0.crate) = 21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7
+SIZE (rust/crates/terminal_size-0.3.0.crate) = 10096
+SHA256 (rust/crates/thiserror-1.0.40.crate) = 978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac
+SIZE (rust/crates/thiserror-1.0.40.crate) = 18709
+SHA256 (rust/crates/thiserror-impl-1.0.40.crate) = f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f
+SIZE (rust/crates/thiserror-impl-1.0.40.crate) = 15138
+SHA256 (rust/crates/thread_local-1.1.7.crate) = 3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152
+SIZE (rust/crates/thread_local-1.1.7.crate) = 13585
+SHA256 (rust/crates/tokio-1.33.0.crate) = 4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653
+SIZE (rust/crates/tokio-1.33.0.crate) = 733783
+SHA256 (rust/crates/tokio-macros-2.1.0.crate) = 630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e
+SIZE (rust/crates/tokio-macros-2.1.0.crate) = 11472
+SHA256 (rust/crates/toml-0.8.6.crate) = 8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc
+SIZE (rust/crates/toml-0.8.6.crate) = 50424
+SHA256 (rust/crates/toml_datetime-0.6.5.crate) = 3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1
+SIZE (rust/crates/toml_datetime-0.6.5.crate) = 10910
+SHA256 (rust/crates/toml_edit-0.20.7.crate) = 70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81
+SIZE (rust/crates/toml_edit-0.20.7.crate) = 101056
+SHA256 (rust/crates/tracing-0.1.37.crate) = 8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8
+SIZE (rust/crates/tracing-0.1.37.crate) = 73888
+SHA256 (rust/crates/tracing-core-0.1.31.crate) = 0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a
+SIZE (rust/crates/tracing-core-0.1.31.crate) = 61263
+SHA256 (rust/crates/tracing-error-0.2.0.crate) = d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e
+SIZE (rust/crates/tracing-error-0.2.0.crate) = 13938
+SHA256 (rust/crates/tracing-subscriber-0.3.17.crate) = 30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77
+SIZE (rust/crates/tracing-subscriber-0.3.17.crate) = 191711
+SHA256 (rust/crates/unicode-ident-1.0.9.crate) = b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0
+SIZE (rust/crates/unicode-ident-1.0.9.crate) = 41978
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d
+SIZE (rust/crates/valuable-0.1.0.crate) = 27718
+SHA256 (rust/crates/walkdir-2.3.3.crate) = 36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698
+SIZE (rust/crates/walkdir-2.3.3.crate) = 23125
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+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 (rust/crates/windows-sys-0.45.0.crate) = 75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0
+SIZE (rust/crates/windows-sys-0.45.0.crate) = 2568659
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-targets-0.42.2.crate) = 8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071
+SIZE (rust/crates/windows-targets-0.42.2.crate) = 5492
+SHA256 (rust/crates/windows-targets-0.48.0.crate) = 7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5
+SIZE (rust/crates/windows-targets-0.48.0.crate) = 7466
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 366543
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.2.crate) = e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43
+SIZE (rust/crates/windows_aarch64_msvc-0.42.2.crate) = 666981
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.0.crate) = b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3
+SIZE (rust/crates/windows_aarch64_msvc-0.48.0.crate) = 671479
+SHA256 (rust/crates/windows_i686_gnu-0.42.2.crate) = c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f
+SIZE (rust/crates/windows_i686_gnu-0.42.2.crate) = 736236
+SHA256 (rust/crates/windows_i686_gnu-0.48.0.crate) = 622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241
+SIZE (rust/crates/windows_i686_gnu-0.48.0.crate) = 741490
+SHA256 (rust/crates/windows_i686_msvc-0.42.2.crate) = 44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060
+SIZE (rust/crates/windows_i686_msvc-0.42.2.crate) = 724951
+SHA256 (rust/crates/windows_i686_msvc-0.48.0.crate) = 4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00
+SIZE (rust/crates/windows_i686_msvc-0.48.0.crate) = 730056
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36
+SIZE (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 699373
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.0.crate) = ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1
+SIZE (rust/crates/windows_x86_64_gnu-0.48.0.crate) = 703595
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 364068
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 366536
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0
+SIZE (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 666936
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a
+SIZE (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 671422
+SHA256 (rust/crates/winnow-0.5.15.crate) = 7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc
+SIZE (rust/crates/winnow-0.5.15.crate) = 145621
+SHA256 (bensadeh-tailspin-2.0.0_GH0.tar.gz) = dcaaedcf671f971af4b400c0387859d41dcf93cedb6741ff07ffe1c2255ab110
+SIZE (bensadeh-tailspin-2.0.0_GH0.tar.gz) = 3633566
diff --git a/sysutils/tailspin/pkg-descr b/sysutils/tailspin/pkg-descr
new file mode 100644
index 000000000000..37c722eb1b0e
--- /dev/null
+++ b/sysutils/tailspin/pkg-descr
@@ -0,0 +1,8 @@
+tailspin works by reading through a log file line by line, running a
+series of regexes against each line. The regexes recognize patterns
+like dates, numbers, severity keywords and more.
+
+tailspin does not make any assumptions on the format or position of
+the items it wants to highlight. For this reason, it requires no
+configuration or setup and will work predictably regardless of the
+format the log file is in.