~dricottone/my-utils

Rewrote tests with bats

As evidenced by the 11 prior commits, proper testing has revealed a
large number of gaps and inconsistencies in these scripts. bats is a
very capable replacement for the old test suite.
Fix quiet option on whiched and whichvi

Previously the quiet option was suppressing the exit code on these
programs.
Effectively no change

I realized why I was deliberately ignoring the quiet option in these
scripts. It was already being handled in myminiparse.sh.
Helptext updates

The more honest description of these programs is [OPTIONS] before
PROGRAM. Options like quiet and verbose do behave differently if they
follow.
whiched and whichvi update

whiched and whichvi should exit as an error if no programs are named as
arguments.

This change was actually accidentally included in an earlier commit for
whiched.
whiched and whichvi now respect the quiet option
whichhead fix

The helptext incorrectly claimed that --number=N was supported.
whichcat now respects the quiet option
Rewrote debom to mirror the new rebom

debom had many options, which were never useful. Output redirection
should simply be handled by the script that calls debom.
Adding to helptext
Documenting quiet option on rebom
Changes to rebom and library

Rebom now acts like cat, just including a BOM in front.

The library has been updated to dump usage, version, and help messages
regardless of the quiet option (-q, --quiet). Previously, the observed
behavior depended on the order of options. Dumped messages were
processed at the time they were seen, so they would ignore a quiet
option that followed. It is better to behave consistently than to obey
the user inconsistently.
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.
Standardization of docs, [[ usage, local variables.

Added an archive helper function.
Moving gitstat into public repo
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.
Fix unittest

Help text specified wrong option.
Next