dotenv-hs icon indicating copy to clipboard operation
dotenv-hs copied to clipboard

Error parsing command arguments

Open sestrella opened this issue 1 year ago • 1 comments

I got the following error passing a "command" as an argument to yesod devel:

> dotenv -o -- yesod devel --success-hook "echo foo"
Invalid argument `foo'

Usage: yesod [-d|--dev] [-v|--verbose] COMMAND

If I call it directly, it works as expected:

> yesod devel --success-hook "echo foo"

My theory is that this is not related to yesod devel per se, but rather to how dotenv -- <command> <args> works, as it seems that is not properly escaping the arguments after --

sestrella avatar Oct 24 '24 16:10 sestrella

I can reproduce the bug with the following example:

image

(don't mind the dot at the end)

And adding some debug logging I see:

image

Which shows that arguments after -- don't seem to keep the quotes. The parser for the arguments looks like this:

many (argument str (metavar "ARG"))

Which seems correct and makes me think this might be a bug in optparse-applicative?

This is the result of getArgs:

image

I think maybe the individual elements of the list are not being quoted, which causes the parser to interpret "echo hi" as 2 separate arguments.

aloussase avatar Nov 08 '24 12:11 aloussase