To me, this is another example of functional vs object oriented styles of programming.<p>signify is essentially a pure function. It carries no state and the output is purely a function of its inputs (and a bunch of internal constants).<p>GnuPG (and indeed music players) are stateful. To some, it may be irritating to build up that state to do something simple. OTOH, that state is useful if it's a cache hit and it's annoying to repeatedly pass the same parameters (i.e., you want to repeatedly do a bunch of ops against the same identity you've imported).<p>It's usually easier to write a functional core and wrap it in something stateful (by currying the arguments) rather than the trying to do the reverse as the author is doing here.
This passphrase2pgp thing is really neat!<p>Also sequoia PGP supports the kind of one-off signature verification the author does with simplegpg:<p>sq verify --public-key-file keyname.asc message.txt<p>I'd be curious to hear what the author thinks of that project
See also the "gpgv" and "symcryptrun" tools included in GnuPG:<p><a href="https://gnupg.org/documentation/manuals/gnupg/gpgv.html#gpgv" rel="nofollow">https://gnupg.org/documentation/manuals/gnupg/gpgv.html#gpgv</a><p><a href="https://gnupg.org/documentation/manuals/gnupg/symcryptrun.html#symcryptrun" rel="nofollow">https://gnupg.org/documentation/manuals/gnupg/symcryptrun.ht...</a>