Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

double quotes do not work with watchexec #17

Open
FuPeiJiang opened this issue Feb 13, 2021 · 1 comment
Open

double quotes do not work with watchexec #17

FuPeiJiang opened this issue Feb 13, 2021 · 1 comment

Comments

@FuPeiJiang
Copy link

running watchexec --restart "cargo run" directly in cmd.exe works

[package.metadata.commands]
dev = 'watchexec --restart "cargo run"'

but when I run (in cmd.exe)
cargo cmd dev
I get:

> watchexec --restart "cargo run" 
'\"cargo run\"' is not recognized as an internal or external command,
operable program or batch file.

my understanding is that " became \"
since it gives the exact output if I run \"cargo run\" in cmd.exe
or
"cargo run" was passed to watchexec instead of cargo run (without quotes)

using this:
dev = 'watchexec --restart "cargo --quiet run"'
I get:

> watchexec --restart "cargo --quiet run"" 
error: Found argument '--quiet' which wasn't expected, or isn't valid in this context

USAGE:
    watchexec <command>... --restart

For more information try --help

why doesn't double quotes work ? which shell is used to execute commands?


my current workaround:

[package.metadata.commands]
quietRun = 'cargo --quiet run'
dev = 'watchexec --restart cargo cmd quietRun'

cargo cmd dev works but it prints
> cargo --quiet run
every time I edit or save files


can you provide a way to make specific commands quiet? (not print for example > cargo --quiet run)
make anything that starts with quiet_ be quiet, so
this be quiet: quiet_quietRun = 'cargo --quiet run'
this not be quiet: quietRun = 'cargo --quiet run'

but this will be slower since cargo cmd quietRun will be run every time. instead of directly cargo --quiet run

@voidpumpkin
Copy link

I am running into a problem related to this issue also.
Im using cargo-watch and having trouble running things.

Examples

Cargo.toml

[package.metadata.commands]
build = "wasm-pack build --target web --out-name wasm --out-dir ./static/build"
start = "miniserve ./static --index index.html"

When adding this command and running it

dev = "cargo watch -s 'cargo cmd build && cargo cmd start'"

output:

> cargo watch -s 'cargo cmd build && cargo cmd start'
error: Found argument 'cmd' which wasn't expected, or isn't valid in this context

USAGE:
    cargo watch [FLAGS] [OPTIONS]

For more information try --help

Same thing happens with:

dev = "cargo watch -s 'cargo cmd build'"

output:

> cargo watch -s 'cargo cmd build'
error: Found argument 'cmd' which wasn't expected, or isn't valid in this context

USAGE:
    cargo watch [FLAGS] [OPTIONS]

For more information try --help

Or even using -x

dev = "cargo watch -x 'cargo cmd build'"

output:

> cargo watch -x 'cmd build'
> cargo watch -x 'cmd build'
error: Found argument 'build'' which wasn't expected, or isn't valid in this context

USAGE:
    cargo watch [FLAGS] [OPTIONS]

For more information try --help

🤔 All mentioned commands work if they are run by hand in command line instead using cargo cmd dev .

Workaround

The only way I can workaround this is to avoid commas completely.
In my case i just had to run an arbitrary command:

[package.metadata.commands]
dev = "cargo watch -- cargo cmd build-and-start" # Solution
build-and-start = "cargo cmd build && cargo cmd start " # Simply needed because i cant use && in the command
build = "wasm-pack build --target web --out-name wasm --out-dir ./static/build"
start = "miniserve ./static --index index.html"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants