~dricottone/my-utils

ref: c18943ff0bc417949dfd80399c298e6f7f006636 my-utils/archives d---------
New shebangs script; fixes to tar utilities and hugo-post script

The shebangs script helps me manage dependency listings.

The tar utilities were failing with to-directory options or passphrase
options containing space characters. The fix requires some unappealing
bash-isms, but at least it works.

hugo-post now will work from the root directory of a Hugo project.
Rewrote parts of untar, mktar,, tarcat, etc

Added --to-directory and --from-directory options throughout.

Added support for a variety of other archive file types.
Adding note about bats to README
Rewrote test suite for bats
Refactored archive logic

Almost all (un)archive code now lives in bash libraries. To add support
for a new compression or encryption algorithm, updates only need to be
made in `archive.bash`, `unarchive.bash`, and the parser in
`mktar-batch`.

`mktar-batch` has eclipsed `mktar` when it comes to explicit command
line options. Much of the logic wqas removed. `mktar` now soleyl exists
as a clever utility that guesses encryption/compression preferences
based on the output filename. Filename is now mandatory.

Refactored tests to reflect these changes.

Standardized use of here-strings in a couple of places.
Full support of age encryption

mktar-batch now supports non-interactive age calls, though I've added a
dependency on expect.

tarcat, tarls, and untar now know what to do with .age files. They also
now know what to do with Zstandard compressed files that use .zstd
(instead of .zst).
Big archival update

mktar now experimentally supports SHA256 checksums and age encryption.

mktar-batch is a version of mktar that strips out the 'clever' algorithm
detection and includes a batch processing/common passphrase mechanism.

Updated tests for mktar.
Quick fix to error text
Fix mktar

SHA1 checksum files were created regardless of existence of corresponding
file. Worse yet, they weren't actual checksums.
Formatting fixes; Help message fixes
Refactored code into multiple 'packages'. One day these may be
independently installable. For now it's just an organization method.

Rewrote main README and added per-package READMEs.

Also: bug fix on whiched and whichvi. They formerly propogated an error
if $EDITOR or $VISUAL were set to a non-existant executable. Also
improved the inline documentation.