git: b9776d9fbee0 - main - games/hivetui: Terminal implementation of the game Hive

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Mon, 28 Oct 2024 12:44:00 UTC
The branch main has been updated by fuz:

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

commit b9776d9fbee0220a6ef85172dc2f1427790a04f9
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2024-10-22 16:07:10 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2024-10-28 12:41:50 +0000

    games/hivetui: Terminal implementation of the game Hive
    
    Hivetui is a TUI (Terminal User Interface) implementation of the board
    game Hive.  It is played with the keyboard and includes a challenging
    AI.  The game includes a tutorial and rules summary.  However, you might
    want to consult the full rules if you don't know Hive yet.
    
    WWW: https://github.com/N-Maas/hivetui
---
 games/Makefile                |   1 +
 games/hivetui/Makefile        |  19 ++++
 games/hivetui/Makefile.crates | 126 +++++++++++++++++++++
 games/hivetui/distinfo        | 255 ++++++++++++++++++++++++++++++++++++++++++
 games/hivetui/pkg-descr       |   4 +
 5 files changed, 405 insertions(+)

diff --git a/games/Makefile b/games/Makefile
index 274bde8305e5..f1374694258d 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -388,6 +388,7 @@
     SUBDIR += highmoon
     SUBDIR += hinversi
     SUBDIR += hitori
+    SUBDIR += hivetui
     SUBDIR += hllib
     SUBDIR += holotz-castle
     SUBDIR += hoverboard-sdl
diff --git a/games/hivetui/Makefile b/games/hivetui/Makefile
new file mode 100644
index 000000000000..d09f24dbf779
--- /dev/null
+++ b/games/hivetui/Makefile
@@ -0,0 +1,19 @@
+PORTNAME=	hivetui
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.1
+CATEGORIES=	games
+
+MAINTAINER=	fuz@FreeBSD.org
+COMMENT=	Terminal implementation of the game Hive
+WWW=		https://github.com/N-Maas/hivetui
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	N-Maas
+
+PLIST_FILES=	bin/hivetui
+
+.include <bsd.port.mk>
diff --git a/games/hivetui/Makefile.crates b/games/hivetui/Makefile.crates
new file mode 100644
index 000000000000..a6c4d0972ca9
--- /dev/null
+++ b/games/hivetui/Makefile.crates
@@ -0,0 +1,126 @@
+CARGO_CRATES=	allocator-api2-0.2.18 \
+		android-tzdata-0.1.1 \
+		android_system_properties-0.1.5 \
+		anstream-0.6.15 \
+		anstyle-1.0.8 \
+		anstyle-parse-0.2.5 \
+		anstyle-query-1.1.1 \
+		anstyle-wincon-3.0.4 \
+		arrayvec-0.7.6 \
+		autocfg-1.4.0 \
+		bitflags-2.6.0 \
+		bumpalo-3.16.0 \
+		cassowary-0.3.0 \
+		castaway-0.2.3 \
+		cc-1.1.31 \
+		cfg-if-1.0.0 \
+		chrono-0.4.38 \
+		clap-4.5.20 \
+		clap_builder-4.5.20 \
+		clap_derive-4.5.18 \
+		clap_lex-0.7.2 \
+		colorchoice-1.0.2 \
+		compact_str-0.8.0 \
+		core-foundation-sys-0.8.7 \
+		crossterm-0.28.1 \
+		crossterm_winapi-0.9.1 \
+		directories-5.0.1 \
+		dirs-sys-0.4.1 \
+		either-1.13.0 \
+		equivalent-1.0.1 \
+		errno-0.3.9 \
+		foldhash-0.1.3 \
+		getrandom-0.2.15 \
+		hashbrown-0.15.0 \
+		heck-0.5.0 \
+		hermit-abi-0.3.9 \
+		hivetuilib-0.1.0 \
+		hivetuilib-ai-0.1.0 \
+		hivetuilib-board-0.1.0 \
+		iana-time-zone-0.1.61 \
+		iana-time-zone-haiku-0.1.2 \
+		indexmap-2.6.0 \
+		instability-0.3.2 \
+		is_terminal_polyfill-1.70.1 \
+		itertools-0.13.0 \
+		itoa-1.0.11 \
+		js-sys-0.3.72 \
+		libc-0.2.161 \
+		libredox-0.1.3 \
+		linux-raw-sys-0.4.14 \
+		lock_api-0.4.12 \
+		log-0.4.22 \
+		lru-0.12.5 \
+		memchr-2.7.4 \
+		mio-1.0.2 \
+		num-traits-0.2.19 \
+		num_enum-0.7.3 \
+		num_enum_derive-0.7.3 \
+		once_cell-1.20.2 \
+		option-ext-0.2.0 \
+		parking_lot-0.12.3 \
+		parking_lot_core-0.9.10 \
+		paste-1.0.15 \
+		proc-macro-crate-3.2.0 \
+		proc-macro2-1.0.88 \
+		quote-1.0.37 \
+		ratatui-0.28.1 \
+		redox_syscall-0.5.7 \
+		redox_users-0.4.6 \
+		rustix-0.38.37 \
+		rustversion-1.0.18 \
+		ryu-1.0.18 \
+		scopeguard-1.2.0 \
+		serde-1.0.211 \
+		serde_derive-1.0.211 \
+		serde_json-1.0.132 \
+		shlex-1.3.0 \
+		signal-hook-0.3.17 \
+		signal-hook-mio-0.2.4 \
+		signal-hook-registry-1.4.2 \
+		smallvec-1.13.2 \
+		static_assertions-1.1.0 \
+		strsim-0.11.1 \
+		strum-0.26.3 \
+		strum_macros-0.26.4 \
+		syn-2.0.82 \
+		text_io-0.1.12 \
+		thiserror-1.0.64 \
+		thiserror-impl-1.0.64 \
+		toml_datetime-0.6.8 \
+		toml_edit-0.22.22 \
+		unicode-ident-1.0.13 \
+		unicode-segmentation-1.12.0 \
+		unicode-truncate-1.1.0 \
+		unicode-width-0.1.14 \
+		utf8parse-0.2.2 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.95 \
+		wasm-bindgen-backend-0.2.95 \
+		wasm-bindgen-macro-0.2.95 \
+		wasm-bindgen-macro-support-0.2.95 \
+		wasm-bindgen-shared-0.2.95 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-core-0.52.0 \
+		windows-sys-0.48.0 \
+		windows-sys-0.52.0 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.6.20
diff --git a/games/hivetui/distinfo b/games/hivetui/distinfo
new file mode 100644
index 000000000000..bec7be23baae
--- /dev/null
+++ b/games/hivetui/distinfo
@@ -0,0 +1,255 @@
+TIMESTAMP = 1729612458
+SHA256 (rust/crates/allocator-api2-0.2.18.crate) = 5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f
+SIZE (rust/crates/allocator-api2-0.2.18.crate) = 62504
+SHA256 (rust/crates/android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0
+SIZE (rust/crates/android-tzdata-0.1.1.crate) = 7674
+SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
+SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
+SHA256 (rust/crates/anstream-0.6.15.crate) = 64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526
+SIZE (rust/crates/anstream-0.6.15.crate) = 29231
+SHA256 (rust/crates/anstyle-1.0.8.crate) = 1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1
+SIZE (rust/crates/anstyle-1.0.8.crate) = 15771
+SHA256 (rust/crates/anstyle-parse-0.2.5.crate) = eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb
+SIZE (rust/crates/anstyle-parse-0.2.5.crate) = 22680
+SHA256 (rust/crates/anstyle-query-1.1.1.crate) = 6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a
+SIZE (rust/crates/anstyle-query-1.1.1.crate) = 9891
+SHA256 (rust/crates/anstyle-wincon-3.0.4.crate) = 5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8
+SIZE (rust/crates/anstyle-wincon-3.0.4.crate) = 12234
+SHA256 (rust/crates/arrayvec-0.7.6.crate) = 7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50
+SIZE (rust/crates/arrayvec-0.7.6.crate) = 31237
+SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
+SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
+SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/castaway-0.2.3.crate) = 0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5
+SIZE (rust/crates/castaway-0.2.3.crate) = 11509
+SHA256 (rust/crates/cc-1.1.31.crate) = c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f
+SIZE (rust/crates/cc-1.1.31.crate) = 84637
+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.38.crate) = a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401
+SIZE (rust/crates/chrono-0.4.38.crate) = 220559
+SHA256 (rust/crates/clap-4.5.20.crate) = b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8
+SIZE (rust/crates/clap-4.5.20.crate) = 56376
+SHA256 (rust/crates/clap_builder-4.5.20.crate) = 19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54
+SIZE (rust/crates/clap_builder-4.5.20.crate) = 163812
+SHA256 (rust/crates/clap_derive-4.5.18.crate) = 4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab
+SIZE (rust/crates/clap_derive-4.5.18.crate) = 30131
+SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97
+SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805
+SHA256 (rust/crates/colorchoice-1.0.2.crate) = d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0
+SIZE (rust/crates/colorchoice-1.0.2.crate) = 7924
+SHA256 (rust/crates/compact_str-0.8.0.crate) = 6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644
+SIZE (rust/crates/compact_str-0.8.0.crate) = 70994
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/crossterm-0.28.1.crate) = 829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6
+SIZE (rust/crates/crossterm-0.28.1.crate) = 132275
+SHA256 (rust/crates/crossterm_winapi-0.9.1.crate) = acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b
+SIZE (rust/crates/crossterm_winapi-0.9.1.crate) = 16027
+SHA256 (rust/crates/directories-5.0.1.crate) = 9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35
+SIZE (rust/crates/directories-5.0.1.crate) = 15833
+SHA256 (rust/crates/dirs-sys-0.4.1.crate) = 520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c
+SIZE (rust/crates/dirs-sys-0.4.1.crate) = 10719
+SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
+SIZE (rust/crates/errno-0.3.9.crate) = 10690
+SHA256 (rust/crates/foldhash-0.1.3.crate) = f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2
+SIZE (rust/crates/foldhash-0.1.3.crate) = 13712
+SHA256 (rust/crates/getrandom-0.2.15.crate) = c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7
+SIZE (rust/crates/getrandom-0.2.15.crate) = 37163
+SHA256 (rust/crates/hashbrown-0.15.0.crate) = 1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb
+SIZE (rust/crates/hashbrown-0.15.0.crate) = 136460
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024
+SIZE (rust/crates/hermit-abi-0.3.9.crate) = 16165
+SHA256 (rust/crates/hivetuilib-0.1.0.crate) = 8ddca46485479b521465c132c45595a5719766102058583356f7b699e996a806
+SIZE (rust/crates/hivetuilib-0.1.0.crate) = 11948
+SHA256 (rust/crates/hivetuilib-ai-0.1.0.crate) = 739583b63d7f9e9581b4b0a2d9ee934e3eb297d6c8c4cc36a2441137e8c12f9f
+SIZE (rust/crates/hivetuilib-ai-0.1.0.crate) = 15500
+SHA256 (rust/crates/hivetuilib-board-0.1.0.crate) = a170b4c7524dabec24e90b812e78f7b24c40e85fd5cb12bcc208a5492dd5de1c
+SIZE (rust/crates/hivetuilib-board-0.1.0.crate) = 16544
+SHA256 (rust/crates/iana-time-zone-0.1.61.crate) = 235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220
+SIZE (rust/crates/iana-time-zone-0.1.61.crate) = 27685
+SHA256 (rust/crates/iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f
+SIZE (rust/crates/iana-time-zone-haiku-0.1.2.crate) = 7185
+SHA256 (rust/crates/indexmap-2.6.0.crate) = 707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da
+SIZE (rust/crates/indexmap-2.6.0.crate) = 85204
+SHA256 (rust/crates/instability-0.3.2.crate) = b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c
+SIZE (rust/crates/instability-0.3.2.crate) = 9772
+SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
+SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492
+SHA256 (rust/crates/itertools-0.13.0.crate) = 413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186
+SIZE (rust/crates/itertools-0.13.0.crate) = 146261
+SHA256 (rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b
+SIZE (rust/crates/itoa-1.0.11.crate) = 10563
+SHA256 (rust/crates/js-sys-0.3.72.crate) = 6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9
+SIZE (rust/crates/js-sys-0.3.72.crate) = 54096
+SHA256 (rust/crates/libc-0.2.161.crate) = 8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1
+SIZE (rust/crates/libc-0.2.161.crate) = 765389
+SHA256 (rust/crates/libredox-0.1.3.crate) = c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d
+SIZE (rust/crates/libredox-0.1.3.crate) = 6068
+SHA256 (rust/crates/linux-raw-sys-0.4.14.crate) = 78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89
+SIZE (rust/crates/linux-raw-sys-0.4.14.crate) = 1826665
+SHA256 (rust/crates/lock_api-0.4.12.crate) = 07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17
+SIZE (rust/crates/lock_api-0.4.12.crate) = 27591
+SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24
+SIZE (rust/crates/log-0.4.22.crate) = 44027
+SHA256 (rust/crates/lru-0.12.5.crate) = 234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38
+SIZE (rust/crates/lru-0.12.5.crate) = 16047
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/mio-1.0.2.crate) = 80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec
+SIZE (rust/crates/mio-1.0.2.crate) = 102777
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/num_enum-0.7.3.crate) = 4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179
+SIZE (rust/crates/num_enum-0.7.3.crate) = 18603
+SHA256 (rust/crates/num_enum_derive-0.7.3.crate) = af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56
+SIZE (rust/crates/num_enum_derive-0.7.3.crate) = 17092
+SHA256 (rust/crates/once_cell-1.20.2.crate) = 1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775
+SIZE (rust/crates/once_cell-1.20.2.crate) = 33394
+SHA256 (rust/crates/option-ext-0.2.0.crate) = 04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d
+SIZE (rust/crates/option-ext-0.2.0.crate) = 7345
+SHA256 (rust/crates/parking_lot-0.12.3.crate) = f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27
+SIZE (rust/crates/parking_lot-0.12.3.crate) = 41860
+SHA256 (rust/crates/parking_lot_core-0.9.10.crate) = 1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8
+SIZE (rust/crates/parking_lot_core-0.9.10.crate) = 32406
+SHA256 (rust/crates/paste-1.0.15.crate) = 57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a
+SIZE (rust/crates/paste-1.0.15.crate) = 18374
+SHA256 (rust/crates/proc-macro-crate-3.2.0.crate) = 8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b
+SIZE (rust/crates/proc-macro-crate-3.2.0.crate) = 11164
+SHA256 (rust/crates/proc-macro2-1.0.88.crate) = 7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9
+SIZE (rust/crates/proc-macro2-1.0.88.crate) = 49219
+SHA256 (rust/crates/quote-1.0.37.crate) = b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af
+SIZE (rust/crates/quote-1.0.37.crate) = 28558
+SHA256 (rust/crates/ratatui-0.28.1.crate) = fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d
+SIZE (rust/crates/ratatui-0.28.1.crate) = 513803
+SHA256 (rust/crates/redox_syscall-0.5.7.crate) = 9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f
+SIZE (rust/crates/redox_syscall-0.5.7.crate) = 26249
+SHA256 (rust/crates/redox_users-0.4.6.crate) = ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43
+SIZE (rust/crates/redox_users-0.4.6.crate) = 15585
+SHA256 (rust/crates/rustix-0.38.37.crate) = 8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811
+SIZE (rust/crates/rustix-0.38.37.crate) = 371243
+SHA256 (rust/crates/rustversion-1.0.18.crate) = 0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248
+SIZE (rust/crates/rustversion-1.0.18.crate) = 17794
+SHA256 (rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f
+SIZE (rust/crates/ryu-1.0.18.crate) = 47713
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/serde-1.0.211.crate) = 1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793
+SIZE (rust/crates/serde-1.0.211.crate) = 78351
+SHA256 (rust/crates/serde_derive-1.0.211.crate) = 54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff
+SIZE (rust/crates/serde_derive-1.0.211.crate) = 56578
+SHA256 (rust/crates/serde_json-1.0.132.crate) = d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03
+SIZE (rust/crates/serde_json-1.0.132.crate) = 150549
+SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64
+SIZE (rust/crates/shlex-1.3.0.crate) = 18713
+SHA256 (rust/crates/signal-hook-0.3.17.crate) = 8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801
+SIZE (rust/crates/signal-hook-0.3.17.crate) = 50296
+SHA256 (rust/crates/signal-hook-mio-0.2.4.crate) = 34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd
+SIZE (rust/crates/signal-hook-mio-0.2.4.crate) = 9314
+SHA256 (rust/crates/signal-hook-registry-1.4.2.crate) = a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1
+SIZE (rust/crates/signal-hook-registry-1.4.2.crate) = 18064
+SHA256 (rust/crates/smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67
+SIZE (rust/crates/smallvec-1.13.2.crate) = 35216
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f
+SIZE (rust/crates/strsim-0.11.1.crate) = 14266
+SHA256 (rust/crates/strum-0.26.3.crate) = 8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06
+SIZE (rust/crates/strum-0.26.3.crate) = 7237
+SHA256 (rust/crates/strum_macros-0.26.4.crate) = 4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be
+SIZE (rust/crates/strum_macros-0.26.4.crate) = 27531
+SHA256 (rust/crates/syn-2.0.82.crate) = 83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021
+SIZE (rust/crates/syn-2.0.82.crate) = 272300
+SHA256 (rust/crates/text_io-0.1.12.crate) = d5f0c8eb2ad70c12a6a69508f499b3051c924f4b1cfeae85bfad96e6bc5bba46
+SIZE (rust/crates/text_io-0.1.12.crate) = 7136
+SHA256 (rust/crates/thiserror-1.0.64.crate) = d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84
+SIZE (rust/crates/thiserror-1.0.64.crate) = 21574
+SHA256 (rust/crates/thiserror-impl-1.0.64.crate) = 08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3
+SIZE (rust/crates/thiserror-impl-1.0.64.crate) = 16073
+SHA256 (rust/crates/toml_datetime-0.6.8.crate) = 0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41
+SIZE (rust/crates/toml_datetime-0.6.8.crate) = 12028
+SHA256 (rust/crates/toml_edit-0.22.22.crate) = 4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5
+SIZE (rust/crates/toml_edit-0.22.22.crate) = 106387
+SHA256 (rust/crates/unicode-ident-1.0.13.crate) = e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe
+SIZE (rust/crates/unicode-ident-1.0.13.crate) = 43279
+SHA256 (rust/crates/unicode-segmentation-1.12.0.crate) = f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493
+SIZE (rust/crates/unicode-segmentation-1.12.0.crate) = 106323
+SHA256 (rust/crates/unicode-truncate-1.1.0.crate) = b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf
+SIZE (rust/crates/unicode-truncate-1.1.0.crate) = 12529
+SHA256 (rust/crates/unicode-width-0.1.14.crate) = 7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af
+SIZE (rust/crates/unicode-width-0.1.14.crate) = 271615
+SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
+SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
+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/wasm-bindgen-0.2.95.crate) = 128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e
+SIZE (rust/crates/wasm-bindgen-0.2.95.crate) = 43894
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.95.crate) = cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358
+SIZE (rust/crates/wasm-bindgen-backend-0.2.95.crate) = 30487
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.95.crate) = e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56
+SIZE (rust/crates/wasm-bindgen-macro-0.2.95.crate) = 6938
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.95.crate) = 26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.95.crate) = 21331
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.95.crate) = 65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d
+SIZE (rust/crates/wasm-bindgen-shared-0.2.95.crate) = 7649
+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 (rust/crates/windows-core-0.52.0.crate) = 33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9
+SIZE (rust/crates/windows-core-0.52.0.crate) = 42154
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/winnow-0.6.20.crate) = 36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b
+SIZE (rust/crates/winnow-0.6.20.crate) = 163617
+SHA256 (N-Maas-hivetui-v0.1.1_GH0.tar.gz) = 56ff1714b6f87268e5c890717bf42de98e9ea7222d058f0495d9a61c85206f6c
+SIZE (N-Maas-hivetui-v0.1.1_GH0.tar.gz) = 373693
diff --git a/games/hivetui/pkg-descr b/games/hivetui/pkg-descr
new file mode 100644
index 000000000000..228671d8e745
--- /dev/null
+++ b/games/hivetui/pkg-descr
@@ -0,0 +1,4 @@
+Hivetui is a TUI (Terminal User Interface) implementation of the board
+game Hive.  It is played with the keyboard and includes a challenging
+AI.  The game includes a tutorial and rules summary.  However, you might
+want to consult the full rules if you don't know Hive yet.