_command_pattern

My command looks like that:

command: 'treedys-controller --camera-firmware=$SNAP/camera-firmware --dnsmasq=$SNAP/usr/sbin/dnsmasq --dnsmasq-leases=$SNAP_DATA/dnsmasq.leases'

i.e. there are options with ‘=’ character in them which doesn’t match with the command pattern from snapcraft-3.9.3/snapcraft/internal/meta/command.py

_COMMAND_PATTERN = re.compile("^[A-Za-z0-9. _#:$-][A-Za-z0-9/. _#:$-]*$")

and then snapcraft warns me that:

A shell wrapper will be generated for command ‘bin/treedys-controller --camera-firmware=$SNAP/camera-firmware --dnsmasq=$SNAP/usr/sbin/dnsmasq --dnsmasq-leases=$SNAP_DATA/dnsmasq.leases’ as it does not conform with the command pattern expected by the runtime. Commands must be relative to the prime directory and can only consist of alphanumeric characters, spaces, and the following special characters: / . _ # : $ -

CLI with ‘=’ is quite common so could you please add ‘=’ to the command pattern or if there is a good reason to not to, please tell me how to properly handle this case.

See https://bugs.launchpad.net/snapd/+bug/1820055 for where we are tracking this issue.

I see … so, lets hope that it will be prioritized and fixed ASAP.

This has always been the bahavior of Snapcraft, we now just make it obvious that a wrapper is required and try to not add one when snapd would accept the command as written.

@palavrov The snap works for you, correct?

Yes, it works. I was just scarred by that warning that I’m doing something wrong.

OK thank you. We should probably reconsider how we present it to the user… Have a great day!