How to automatically respond to confirmations in CLI tools
- Published at
- Updated at
- Reading time
- 2min
Recently, we released a new CLI tool to migrate data in Contentful. It's currently in beta and we'll work on it to make it better.
Last week we received a question in our community forum. A user asked if he could use the CLI programmatically. He had the problem that the CLI asks at some point for confirmation and this makes it hard to run in a CI environment.
? Do you want to apply the migration? (Y/n)
How could you answer this question when it's not you running this command but a potential CI environment.
My colleage Stephan had a cool solution. He responded that the unix command yes
could help out here. yes
? What kind of command is that?
The man page for yes
is not giving much information but according to [Wikipedia](https://en.wikipedia.org/wiki/Yes_(Unix) this is what it does:
By itself, the yes command outputs 'y' or whatever is specified as an argument, followed by a newline repeatedly until stopped by the user or otherwise killed; when piped into a command, it will continue until the pipe breaks (i.e., the program completes its execution).
When you execute yes sunshine
this is what you'll get:
$ yes sunshine
sunshine
sunshine
sunshine
sunshine
sunshine
...
A lot of sunshine! โ๏ธ
Use it to combine yes
with other CLI commands and auto-respond to confirmations.
$ yes Y | contentful-migration --space-id xxx migration.js
There is another way to answer confirmation in a CLI automatically, though. It turns out, you can also echo
and pipe a string into another command.
$ echo yes | contentful-migration --space-id xxx migration.js
I think that's pretty cool stuff and it will definitely help me for my next automation tasks!
Yes? Cool! You might want to check out Web Weekly for more quick learnings. The last edition went out 15 days ago.