Subject: [shepherd] Shell completion does not quote arguments

From: Tomas Volf <[email-masked]>
Date: Wed, 02 Apr 2025 00:52:56 +0200

Hello,

given two services named cron-foo-(bar) and cron-foo-(baz), the shell
completion provided by Shepherd does not correctly handle the (
character.

    $ herd status cron-<TAB>             <-- completes into...
    $ herd status cron-foo-(<POINT>      <-- ... this
    $ herd status cron-foo-(<TAB>        <-- but this does nothing

Manually fixing up the ( and trying again:

    $ herd status cron-foo-\(bar<TAB>    <-- completes into...
    $ herd status cron-foo-(bar)         <-- ... this

However the final line, while the service name is correct (from
Shepherd's point of view), is not a valid shell syntax.

I assume some other characters might cause similar problems.

Have a nice day,
Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.