~ivilata/gwit-spec

1

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

Details
Message ID
<Z8zWdGCIVe_wDV_m@sax>
Sender timestamp
1741481092
DKIM signature
pass
Download raw message
Hello list, I'm happy to announce the release of gwish v0.2!

gwish (pronounced [gu̯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 GNU/Linux 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.

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

----

This release adds support for site introductions, which are used for mirroring
sites, finding out new remotes and discovering new sites.  Site configuration
checks have been greatly enhanced for closer spec compliance.  A new mode for
scripting-friendly output has been added, and site name caching can speed up
some listings.

Features:

- The `mirror` command may be invoked without a repo location (remote URL), in
  which case it gathers remotes for the given site present in other sites'
  introductions, and asks which one to use.
- The `remotes` command also lists (prefixed by `#`) the remotes for the given
  site present in other sites' introductions (along with the introducer's site
  ID and name).  Remotes in site configuration but disabled in the mirror are
  also listed.
- The new `intro` command may be used to mirror a site given a file with an
  introduction.  Remotes in the introduction are tried in order, and the rest
  of remotes are added to the mirror.
- The new `discover` command lists new sites proposed by locally mirrored ones
  via introductions, along with their proposed names.
- Listing commands (namely `sites`, `remotes` and `discover`) honour the
  `GWISH_PORCELAIN` environment variable: if set and non-empty, they produce
  an output amenable to parsing by scripts.
- The `remove` command now requires interactive confirmation of removal, or an
  extra `force` argument.

Enhancements:

- Extend site configuration checks to limit multivalue number, drop overlong
  values, drop illegal empty or multiline values, drop names consisting of
  whitespace or starting with `0x`, and to warn when such issues are found.
  Newlines and control characters in names are replaced.  Remote repo
  locations with newlines are not supported.
- New in-memory cache for site names, for listing operations where the same
  site name may be shown many times.
- Minor optimizations (case-insensitive searches, nulls-to-newlines
  conversion, variable interpolation).

Bugfixes:

- Fix regular expression to identify language-dependent descriptions
  (`desc-xx`) in site configuration.
- Fix (sometimes invisible) trailing space when showing site name.
- Minor fixes (missing `read` options, command descriptions, system
  compatibility claims).

-- 
Ivan Vilata i Balaguer -- https://elvil.net/
Details
Message ID
<Z8zX10L3lpOiWC7Z@sax>
In-Reply-To
<Z8zWdGCIVe_wDV_m@sax> (view parent)
Sender timestamp
1741481447
DKIM signature
pass
Download raw message
Ivan Vilata i Balaguer (2025-03-09 00:44:52 +0100) wrote:

> Hello list, I'm happy to announce the release of gwish v0.2!

I'm still trying to create a template for gwish announcements, and I realise
that I forgot to include the project's URL, sorry!

<https://git.sr.ht/~ivilata/gwish>

Cheers,

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