~ivilata/gwit-spec

ANN: gwish v0.3, a gwit client in POSIX shell

Details
Message ID
<Z-bTaVr4ZMKDnep7@sax>
Sender timestamp
1743184249
DKIM signature
pass
Download raw message
Hello list, I'm happy to announce the release of gwish v0.3!

gwish (pronounced [g◆iʃ]) is a command-line gwit client written in POSIX shell
as a one-piece script.  It strives to have absolute minimal dependencies which
you can find in a 10-year-old Unix box.  When possible, gwish tries to use the
example commands shown in the gwit specification, so as to serve as a
proof-of-concept, reference and inspiration for other implementations.

For more information, check out the project's homepage:
<https://git.sr.ht/~ivilata/gwish>

If you have any issues or comments, don't hesitate to contact me.  Thank you!

----

The main news in this release is basic site support, i.e. the ability to
access content from a particular gwit site given a path and an optional
version of the site.  This is done while taking both root directory and index
file from site configuration into account.  The new `cat` and `type` commands
provide access to content and media type, respectively.  gwit URIs are not
supported yet, but it should be easy to convert such a URI into a `cat` call.

Great effort has also gone into making gwish compatible with non-GNU systems,
by adhering to POSIX more closely, or choosing approaches compatible with both
GNU and BSD systems.

gwish now also allows to override self-proposed site names (i.e. those in
their site configuration) with your own petnames via environment variables.

Other minor usability and security fixes have been included.

Features:

- Add `cat` command to dump the content at a site's path, with an optional
  version.
- Add `type` command to show the media type of the content at a site's path,
  with an optional version (sharing syntax and machinery with `cat`).
- Allow to override site names (petnames) via environment variables like
  `GWIT_NAME_1a2b...3e4f` (using the site name cache mechanism).

Enhancements:

- Make the script compatible with non-GNU utilities by avoiding non-POSIX
  options and features.  Tested on NetBSD 9 (5 years old, for lack of a
  working image of a 10 years old NetBSD 7 with Git and GnuPG).
- Avoid using null characters as value terminators when possible both
  internally and externally.  This includes the output of the `conf` command
  with `NAME+`.  The change simplifies code and support for non-GNU utilities.
- Highlight diagnostic message headings and command names in `help` output for
  readability (if on a terminal).
- Better descriptions and consistent initialization of internal global
  variables.

Bugfixes:

- Replace unsafe uses of `echo` with `printf` (Dash, BSDs and POSIX' `echo`
  always interpret octal escapes in all arguments, and they may not be
  sufficiently sanitized).
- Add missing ugly fixes to `fail` calls with tested exit status.
- Use ASCII replacement character in names on non-UTF-8 locales.
- Add missing programs to Coreutils list comment.

-- 
Ivan Vilata i Balaguer -- https://elvil.net/
Reply to thread Export thread (mbox)