git: da83830681b5 - main - www/tuifeed: Terminal RSS feed reader with a fancy UI

From: Koichiro Iwao <meta_at_FreeBSD.org>
Date: Thu, 19 May 2022 04:21:41 UTC
The branch main has been updated by meta:

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

commit da83830681b578db3c67f96413a3997f843fb949
Author:     Mostly BSD <sec.research.2005@gmail.com>
AuthorDate: 2022-04-19 16:35:46 +0000
Commit:     Koichiro Iwao <meta@FreeBSD.org>
CommitDate: 2022-05-19 04:21:04 +0000

    www/tuifeed: Terminal RSS feed reader with a fancy UI
    
    Terminal feed reader with a fancy UI
    
    tuifeed is a news feed reader with a fancy terminal user interface.
    It allows you read news from your favourite RSS and Atom sources,
    which can be easily configured in a TOML file.
    
    Features
    
    - Read feed from any RSS/Atom source
    - Open any article in your favourite browser in one-click
    - Compatible with Windows, Linux, *BSD and MacOS
    - Easy setup
    
    WWW: https://github.com/veeso/tuifeed
    
    PR:     263424
---
 www/Makefile            |   1 +
 www/tuifeed/Makefile    | 147 ++++++++++++++++++++++++++++++
 www/tuifeed/distinfo    | 233 ++++++++++++++++++++++++++++++++++++++++++++++++
 www/tuifeed/pkg-descr   |  14 +++
 www/tuifeed/pkg-message |  11 +++
 5 files changed, 406 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index dd291f6986e0..2f7e17778566 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -2257,6 +2257,7 @@
     SUBDIR += transproxy
     SUBDIR += tt-rss
     SUBDIR += ttf2eot
+    SUBDIR += tuifeed
     SUBDIR += tusc
     SUBDIR += tusd
     SUBDIR += twiki
diff --git a/www/tuifeed/Makefile b/www/tuifeed/Makefile
new file mode 100644
index 000000000000..8825651ee37c
--- /dev/null
+++ b/www/tuifeed/Makefile
@@ -0,0 +1,147 @@
+PORTNAME=	tuifeed
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.1
+CATEGORIES=	www
+
+MAINTAINER=	sec.research.2005@gmail.com
+COMMENT=	Trminal feed reader with a fancy UI
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	veeso
+
+CARGO_BUILD_ARGS=	--locked
+CARGO_INSTALL_ARGS=	--locked
+CARGO_UPDATE_ARGS=	--locked
+
+CARGO_CRATES=	aho-corasick-0.7.18 \
+		ansi_term-0.12.1 \
+		argh-0.1.6 \
+		argh_derive-0.1.6 \
+		argh_shared-0.1.6 \
+		autocfg-1.0.1 \
+		base64-0.13.0 \
+		bitflags-1.3.2 \
+		bumpalo-3.8.0 \
+		cassowary-0.3.0 \
+		cc-1.0.72 \
+		cfg-if-1.0.0 \
+		chrono-0.4.19 \
+		chunked_transfer-1.4.0 \
+		crossterm-0.20.0 \
+		crossterm_winapi-0.8.0 \
+		ctor-0.1.21 \
+		diff-0.1.12 \
+		dirs-4.0.0 \
+		dirs-sys-0.3.6 \
+		encoding_rs-0.8.29 \
+		feed-rs-1.0.0 \
+		form_urlencoded-1.0.1 \
+		getrandom-0.2.3 \
+		heck-0.3.3 \
+		idna-0.2.3 \
+		instant-0.1.12 \
+		itoa-0.4.8 \
+		js-sys-0.3.55 \
+		lazy_static-1.4.0 \
+		libc-0.2.107 \
+		lock_api-0.4.5 \
+		log-0.4.14 \
+		matches-0.1.9 \
+		memchr-2.4.1 \
+		mime-0.3.16 \
+		mio-0.7.14 \
+		miow-0.3.7 \
+		ntapi-0.3.6 \
+		num-integer-0.1.44 \
+		num-traits-0.2.14 \
+		once_cell-1.8.0 \
+		open-2.0.1 \
+		output_vt100-0.1.2 \
+		parking_lot-0.11.2 \
+		parking_lot_core-0.8.5 \
+		pathdiff-0.2.1 \
+		percent-encoding-2.1.0 \
+		ppv-lite86-0.2.15 \
+		pretty_assertions-0.7.2 \
+		proc-macro2-1.0.32 \
+		quick-xml-0.22.0 \
+		quote-1.0.10 \
+		rand-0.8.4 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.3 \
+		rand_hc-0.3.1 \
+		redox_syscall-0.2.10 \
+		redox_users-0.4.0 \
+		regex-1.5.4 \
+		regex-syntax-0.6.25 \
+		remove_dir_all-0.5.3 \
+		ring-0.16.20 \
+		rustls-0.20.1 \
+		ryu-1.0.5 \
+		scopeguard-1.1.0 \
+		sct-0.7.0 \
+		serde-1.0.130 \
+		serde_derive-1.0.130 \
+		serde_json-1.0.70 \
+		serial_test-0.5.1 \
+		serial_test_derive-0.5.1 \
+		signal-hook-0.3.10 \
+		signal-hook-mio-0.2.1 \
+		signal-hook-registry-1.4.0 \
+		siphasher-0.3.7 \
+		smallvec-1.7.0 \
+		smawk-0.3.1 \
+		spin-0.5.2 \
+		syn-1.0.81 \
+		tempfile-3.2.0 \
+		textwrap-0.14.2 \
+		thiserror-1.0.30 \
+		thiserror-impl-1.0.30 \
+		time-0.1.44 \
+		tinyvec-1.5.1 \
+		tinyvec_macros-0.1.0 \
+		toml-0.5.8 \
+		tui-0.16.0 \
+		tui-realm-stdlib-1.0.3 \
+		tuirealm-1.0.0 \
+		tuirealm_derive-1.0.0 \
+		unicode-bidi-0.3.7 \
+		unicode-linebreak-0.1.2 \
+		unicode-normalization-0.1.19 \
+		unicode-segmentation-1.8.0 \
+		unicode-truncate-0.2.0 \
+		unicode-width-0.1.9 \
+		unicode-xid-0.2.2 \
+		untrusted-0.7.1 \
+		ureq-2.3.1 \
+		url-2.2.2 \
+		uuid-0.8.2 \
+		wasi-0.10.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.78 \
+		wasm-bindgen-backend-0.2.78 \
+		wasm-bindgen-macro-0.2.78 \
+		wasm-bindgen-macro-support-0.2.78 \
+		wasm-bindgen-shared-0.2.78 \
+		web-sys-0.3.55 \
+		webpki-0.22.0 \
+		webpki-roots-0.22.1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0
+
+PLIST_FILES=	bin/${PORTNAME}
+PORTDOCS=	*md
+OPTIONS_DEFINE=	DOCS
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	(cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR})
+
+.include <bsd.port.mk>
diff --git a/www/tuifeed/distinfo b/www/tuifeed/distinfo
new file mode 100644
index 000000000000..4b6513c92a5f
--- /dev/null
+++ b/www/tuifeed/distinfo
@@ -0,0 +1,233 @@
+TIMESTAMP = 1650377231
+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/argh-0.1.6.crate) = f023c76cd7975f9969f8e29f0e461decbdc7f51048ce43427107a3d192f1c9bf
+SIZE (rust/crates/argh-0.1.6.crate) = 15351
+SHA256 (rust/crates/argh_derive-0.1.6.crate) = 48ad219abc0c06ca788aface2e3a1970587e3413ab70acd20e54b6ec524c1f8f
+SIZE (rust/crates/argh_derive-0.1.6.crate) = 17451
+SHA256 (rust/crates/argh_shared-0.1.6.crate) = 38de00daab4eac7d753e97697066238d67ce9d7e2d823ab4f72fe14af29f3f33
+SIZE (rust/crates/argh_shared-0.1.6.crate) = 4059
+SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (rust/crates/base64-0.13.0.crate) = 904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd
+SIZE (rust/crates/base64-0.13.0.crate) = 62070
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bumpalo-3.8.0.crate) = 8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c
+SIZE (rust/crates/bumpalo-3.8.0.crate) = 79835
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/cc-1.0.72.crate) = 22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee
+SIZE (rust/crates/cc-1.0.72.crate) = 57495
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (rust/crates/chunked_transfer-1.4.0.crate) = fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e
+SIZE (rust/crates/chunked_transfer-1.4.0.crate) = 9238
+SHA256 (rust/crates/crossterm-0.20.0.crate) = c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d
+SIZE (rust/crates/crossterm-0.20.0.crate) = 103025
+SHA256 (rust/crates/crossterm_winapi-0.8.0.crate) = 3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507
+SIZE (rust/crates/crossterm_winapi-0.8.0.crate) = 15531
+SHA256 (rust/crates/ctor-0.1.21.crate) = ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa
+SIZE (rust/crates/ctor-0.1.21.crate) = 9303
+SHA256 (rust/crates/diff-0.1.12.crate) = 0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499
+SIZE (rust/crates/diff-0.1.12.crate) = 10223
+SHA256 (rust/crates/dirs-4.0.0.crate) = ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059
+SIZE (rust/crates/dirs-4.0.0.crate) = 12503
+SHA256 (rust/crates/dirs-sys-0.3.6.crate) = 03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780
+SIZE (rust/crates/dirs-sys-0.3.6.crate) = 10626
+SHA256 (rust/crates/encoding_rs-0.8.29.crate) = a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746
+SIZE (rust/crates/encoding_rs-0.8.29.crate) = 1368211
+SHA256 (rust/crates/feed-rs-1.0.0.crate) = dc6f51721365322ea2b7920033d9625dfbb776dab5ced2585b5f66ff2220852d
+SIZE (rust/crates/feed-rs-1.0.0.crate) = 78712
+SHA256 (rust/crates/form_urlencoded-1.0.1.crate) = 5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191
+SIZE (rust/crates/form_urlencoded-1.0.1.crate) = 8773
+SHA256 (rust/crates/getrandom-0.2.3.crate) = 7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753
+SIZE (rust/crates/getrandom-0.2.3.crate) = 26261
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/idna-0.2.3.crate) = 418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8
+SIZE (rust/crates/idna-0.2.3.crate) = 271023
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
+SIZE (rust/crates/itoa-0.4.8.crate) = 11926
+SHA256 (rust/crates/js-sys-0.3.55.crate) = 7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84
+SIZE (rust/crates/js-sys-0.3.55.crate) = 70499
+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.107.crate) = fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219
+SIZE (rust/crates/libc-0.2.107.crate) = 554639
+SHA256 (rust/crates/lock_api-0.4.5.crate) = 712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109
+SIZE (rust/crates/lock_api-0.4.5.crate) = 25199
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/matches-0.1.9.crate) = a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f
+SIZE (rust/crates/matches-0.1.9.crate) = 2246
+SHA256 (rust/crates/memchr-2.4.1.crate) = 308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a
+SIZE (rust/crates/memchr-2.4.1.crate) = 64977
+SHA256 (rust/crates/mime-0.3.16.crate) = 2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d
+SIZE (rust/crates/mime-0.3.16.crate) = 15206
+SHA256 (rust/crates/mio-0.7.14.crate) = 8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc
+SIZE (rust/crates/mio-0.7.14.crate) = 87429
+SHA256 (rust/crates/miow-0.3.7.crate) = b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21
+SIZE (rust/crates/miow-0.3.7.crate) = 24563
+SHA256 (rust/crates/ntapi-0.3.6.crate) = 3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44
+SIZE (rust/crates/ntapi-0.3.6.crate) = 127221
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/once_cell-1.8.0.crate) = 692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56
+SIZE (rust/crates/once_cell-1.8.0.crate) = 28925
+SHA256 (rust/crates/open-2.0.1.crate) = b46b233de7d83bc167fe43ae2dda3b5b84e80e09cceba581e4decb958a4896bf
+SIZE (rust/crates/open-2.0.1.crate) = 6648
+SHA256 (rust/crates/output_vt100-0.1.2.crate) = 53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9
+SIZE (rust/crates/output_vt100-0.1.2.crate) = 4062
+SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
+SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
+SHA256 (rust/crates/parking_lot_core-0.8.5.crate) = d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216
+SIZE (rust/crates/parking_lot_core-0.8.5.crate) = 32466
+SHA256 (rust/crates/pathdiff-0.2.1.crate) = 8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd
+SIZE (rust/crates/pathdiff-0.2.1.crate) = 7142
+SHA256 (rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (rust/crates/ppv-lite86-0.2.15.crate) = ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba
+SIZE (rust/crates/ppv-lite86-0.2.15.crate) = 22002
+SHA256 (rust/crates/pretty_assertions-0.7.2.crate) = 1cab0e7c02cf376875e9335e0ba1da535775beb5450d21e1dffca068818ed98b
+SIZE (rust/crates/pretty_assertions-0.7.2.crate) = 79200
+SHA256 (rust/crates/proc-macro2-1.0.32.crate) = ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43
+SIZE (rust/crates/proc-macro2-1.0.32.crate) = 41003
+SHA256 (rust/crates/quick-xml-0.22.0.crate) = 8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b
+SIZE (rust/crates/quick-xml-0.22.0.crate) = 132066
+SHA256 (rust/crates/quote-1.0.10.crate) = 38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05
+SIZE (rust/crates/quote-1.0.10.crate) = 29960
+SHA256 (rust/crates/rand-0.8.4.crate) = 2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8
+SIZE (rust/crates/rand-0.8.4.crate) = 87406
+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.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/rand_hc-0.3.1.crate) = d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7
+SIZE (rust/crates/rand_hc-0.3.1.crate) = 11891
+SHA256 (rust/crates/redox_syscall-0.2.10.crate) = 8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff
+SIZE (rust/crates/redox_syscall-0.2.10.crate) = 23582
+SHA256 (rust/crates/redox_users-0.4.0.crate) = 528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64
+SIZE (rust/crates/redox_users-0.4.0.crate) = 13023
+SHA256 (rust/crates/regex-1.5.4.crate) = d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461
+SIZE (rust/crates/regex-1.5.4.crate) = 236581
+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/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (rust/crates/rustls-0.20.1.crate) = dac4581f0fc0e0efd529d069e8189ec7b90b8e7680e21beb35141bdc45f36040
+SIZE (rust/crates/rustls-0.20.1.crate) = 238242
+SHA256 (rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
+SIZE (rust/crates/ryu-1.0.5.crate) = 49570
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/sct-0.7.0.crate) = d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4
+SIZE (rust/crates/sct-0.7.0.crate) = 27502
+SHA256 (rust/crates/serde-1.0.130.crate) = f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913
+SIZE (rust/crates/serde-1.0.130.crate) = 75305
+SHA256 (rust/crates/serde_derive-1.0.130.crate) = d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b
+SIZE (rust/crates/serde_derive-1.0.130.crate) = 54703
+SHA256 (rust/crates/serde_json-1.0.70.crate) = e277c495ac6cd1a01a58d0a0c574568b4d1ddf14f59965c6a58b8d96400b54f3
+SIZE (rust/crates/serde_json-1.0.70.crate) = 115394
+SHA256 (rust/crates/serial_test-0.5.1.crate) = e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d
+SIZE (rust/crates/serial_test-0.5.1.crate) = 2993
+SHA256 (rust/crates/serial_test_derive-0.5.1.crate) = b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5
+SIZE (rust/crates/serial_test_derive-0.5.1.crate) = 3609
+SHA256 (rust/crates/signal-hook-0.3.10.crate) = 9c98891d737e271a2954825ef19e46bd16bdb98e2746f2eec4f7a4ef7946efd1
+SIZE (rust/crates/signal-hook-0.3.10.crate) = 48491
+SHA256 (rust/crates/signal-hook-mio-0.2.1.crate) = 29fd5867f1c4f2c5be079aee7a2adf1152ebb04a4bc4d341f504b7dece607ed4
+SIZE (rust/crates/signal-hook-mio-0.2.1.crate) = 8893
+SHA256 (rust/crates/signal-hook-registry-1.4.0.crate) = e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0
+SIZE (rust/crates/signal-hook-registry-1.4.0.crate) = 17912
+SHA256 (rust/crates/siphasher-0.3.7.crate) = 533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b
+SIZE (rust/crates/siphasher-0.3.7.crate) = 10097
+SHA256 (rust/crates/smallvec-1.7.0.crate) = 1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309
+SIZE (rust/crates/smallvec-1.7.0.crate) = 27459
+SHA256 (rust/crates/smawk-0.3.1.crate) = f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043
+SIZE (rust/crates/smawk-0.3.1.crate) = 12840
+SHA256 (rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (rust/crates/syn-1.0.81.crate) = f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966
+SIZE (rust/crates/syn-1.0.81.crate) = 234144
+SHA256 (rust/crates/tempfile-3.2.0.crate) = dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22
+SIZE (rust/crates/tempfile-3.2.0.crate) = 25892
+SHA256 (rust/crates/textwrap-0.14.2.crate) = 0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80
+SIZE (rust/crates/textwrap-0.14.2.crate) = 52016
+SHA256 (rust/crates/thiserror-1.0.30.crate) = 854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417
+SIZE (rust/crates/thiserror-1.0.30.crate) = 17748
+SHA256 (rust/crates/thiserror-impl-1.0.30.crate) = aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b
+SIZE (rust/crates/thiserror-impl-1.0.30.crate) = 15230
+SHA256 (rust/crates/time-0.1.44.crate) = 6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255
+SIZE (rust/crates/time-0.1.44.crate) = 28885
+SHA256 (rust/crates/tinyvec-1.5.1.crate) = 2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2
+SIZE (rust/crates/tinyvec-1.5.1.crate) = 44942
+SHA256 (rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (rust/crates/tui-0.16.0.crate) = 39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23
+SIZE (rust/crates/tui-0.16.0.crate) = 142363
+SHA256 (rust/crates/tui-realm-stdlib-1.0.3.crate) = 989d8272a8fd5ae1599d79dd1dae10528e24e06edf21b08067bf211fb69f6d15
+SIZE (rust/crates/tui-realm-stdlib-1.0.3.crate) = 39865
+SHA256 (rust/crates/tuirealm-1.0.0.crate) = 83c940677c05752fd223073cdc93feb12738264bb3db9b6a644dc99992478d8e
+SIZE (rust/crates/tuirealm-1.0.0.crate) = 52983
+SHA256 (rust/crates/tuirealm_derive-1.0.0.crate) = e0adcdaf59881626555558eae08f8a53003c8a1961723b4d7a10c51599abbc81
+SIZE (rust/crates/tuirealm_derive-1.0.0.crate) = 4914
+SHA256 (rust/crates/unicode-bidi-0.3.7.crate) = 1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f
+SIZE (rust/crates/unicode-bidi-0.3.7.crate) = 33759
+SHA256 (rust/crates/unicode-linebreak-0.1.2.crate) = 3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f
+SIZE (rust/crates/unicode-linebreak-0.1.2.crate) = 69293
+SHA256 (rust/crates/unicode-normalization-0.1.19.crate) = d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9
+SIZE (rust/crates/unicode-normalization-0.1.19.crate) = 107353
+SHA256 (rust/crates/unicode-segmentation-1.8.0.crate) = 8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b
+SIZE (rust/crates/unicode-segmentation-1.8.0.crate) = 94011
+SHA256 (rust/crates/unicode-truncate-0.2.0.crate) = a04be5ca5f7a4a7270ffea82bc41c59b87c611ed04f20e77c338e8d3c2348e42
+SIZE (rust/crates/unicode-truncate-0.2.0.crate) = 9835
+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.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (rust/crates/ureq-2.3.1.crate) = c5c448dcb78ec38c7d59ec61f87f70a98ea19171e06c139357e012ee226fec90
+SIZE (rust/crates/ureq-2.3.1.crate) = 80998
+SHA256 (rust/crates/url-2.2.2.crate) = a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c
+SIZE (rust/crates/url-2.2.2.crate) = 68555
+SHA256 (rust/crates/uuid-0.8.2.crate) = bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7
+SIZE (rust/crates/uuid-0.8.2.crate) = 37909
+SHA256 (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f
+SIZE (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 26964
+SHA256 (rust/crates/wasm-bindgen-0.2.78.crate) = 632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce
+SIZE (rust/crates/wasm-bindgen-0.2.78.crate) = 162111
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.78.crate) = a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b
+SIZE (rust/crates/wasm-bindgen-backend-0.2.78.crate) = 25576
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.78.crate) = d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9
+SIZE (rust/crates/wasm-bindgen-macro-0.2.78.crate) = 11700
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.78.crate) = 7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.78.crate) = 17858
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.78.crate) = 0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc
+SIZE (rust/crates/wasm-bindgen-shared-0.2.78.crate) = 7206
+SHA256 (rust/crates/web-sys-0.3.55.crate) = 38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb
+SIZE (rust/crates/web-sys-0.3.55.crate) = 664827
+SHA256 (rust/crates/webpki-0.22.0.crate) = f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd
+SIZE (rust/crates/webpki-0.22.0.crate) = 58663
+SHA256 (rust/crates/webpki-roots-0.22.1.crate) = c475786c6f47219345717a043a37ec04cb4bc185e28853adcc4fa0a947eba630
+SIZE (rust/crates/webpki-roots-0.22.1.crate) = 233271
+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-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 (veeso-tuifeed-v0.1.1_GH0.tar.gz) = 438ffd8a24973aa1c014ef75a6967865a5a2896405af28127a19583afa07dbb8
+SIZE (veeso-tuifeed-v0.1.1_GH0.tar.gz) = 1714740
diff --git a/www/tuifeed/pkg-descr b/www/tuifeed/pkg-descr
new file mode 100644
index 000000000000..e880c8dea035
--- /dev/null
+++ b/www/tuifeed/pkg-descr
@@ -0,0 +1,14 @@
+Terminal feed reader with a fancy UI
+
+tuifeed is a news feed reader with a fancy terminal user interface.
+It allows you read news from your favourite RSS and Atom sources,
+which can be easily configured in a TOML file.
+
+Features
+
+- Read feed from any RSS/Atom source
+- Open any article in your favourite browser in one-click
+- Compatible with Windows, Linux, *BSD and MacOS
+- Easy setup
+
+WWW: https://github.com/veeso/tuifeed
diff --git a/www/tuifeed/pkg-message b/www/tuifeed/pkg-message
new file mode 100644
index 000000000000..bf6ea7816e53
--- /dev/null
+++ b/www/tuifeed/pkg-message
@@ -0,0 +1,11 @@
+[
+{ type: install
+  message: <<EOM
+Run
+tuifeed -c
+to open up the configuration file.
+You can add RSS feeds, one per line in the format
+"Name" = "RSS URL"
+EOM
+}
+]