Skip to content

Latest commit

 

History

History
66 lines (52 loc) · 1.98 KB

Response-file-processing.md

File metadata and controls

66 lines (52 loc) · 1.98 KB

Response file processing

Complex command processing

Sometimes you want to execute a set of commands on a regular basis and don't want to write it to the console each time. For example, let's use that coffee brewing example above and define two files for our favourite coffee and tea recipes (one argument per line).

This would be our coffee.txt file (indented for readability):

coffee
    Caramel
    Cinnamon
    Whipped Cream

And this would be our tea.txt file (again, indented for readability):

tea
    Honey
    Lime

switchit can read these files so that each line is taken to be a command line argument, unless that line begins with # in which case it is skipped.

$ node examples/coffeehouse-simple.js @examples/coffee.txt                                  
Let's prepare a cup of coffee.
Add the following extras:
- Caramel
- Cinnamon
- Whipped Cream

$ node examples/coffeehouse-simple.js @examples/tea.txt   
Let's prepare a cup of tea.
Add the following extras:
- Honey
- Lime

Nested file processing

All lines from the specified file are inserted into the command line arguments as if they had been typed there instead of "@{file}". For example, a coffe-and-tea.txt file can contain response file insertions as well:

@coffe.txt
and
@tea.txt

Now if you try to run this, not only the command line argument is expanded but any @{file} lines on it as well (paths are relative to the current working directory):

$ cd examples
$ node coffeehouse-simple.js @coffee-and-tea.txt                  
Let's prepare a cup of coffee.
Add the following extras:
- Caramel
- Cinnamon
- Whipped Cream
Let's prepare a cup of tea.
Add the following extras:
- Honey
- Lime

Escaping the @ symbol

If you want to use the @ symbol on any of your switch values or parameters, you can escape it as @@:

$ node examples/simple2.js @@Example
Hi, @Example!