SLING-7678 fix some option case
diff --git a/src/main/java/org/apache/sling/pipes/PipeBuilder.java b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
index 16a696f..f73e0c1 100644
--- a/src/main/java/org/apache/sling/pipes/PipeBuilder.java
+++ b/src/main/java/org/apache/sling/pipes/PipeBuilder.java
@@ -381,6 +381,7 @@
      * @param numThreads number of threads to use for running the contained pipes
      * @param bindings additional bindings for the execution (can be null)
      * @return set of resource path, merged output of pipes execution (order is arbitrary)
+     * @throws Exception in case something went wrong in run execution
      */
     ExecutionResult runParallel(int numThreads, Map bindings) throws Exception;
 }
diff --git a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
index b03c7d9..7875619 100644
--- a/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
+++ b/src/main/java/org/apache/sling/pipes/internal/GogoCommands.java
@@ -31,7 +31,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.StringReader;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -116,11 +115,11 @@
 
     /**
      * internal execution command handler
-     * @param resolver
-     * @param path
-     * @param optionTokens
+     * @param resolver resolver with which pipe will be executed
+     * @param path pipe path to execute, {@code INPUT} for getting last token's output as path for things like build some / pipe | execute -
+     * @param optionTokens different options tokens
      * @return Execution results
-     * @throws Exception
+     * @throws Exception exception in case something goes wrong
      */
     protected ExecutionResult executeInternal(ResourceResolver resolver, String path, String... optionTokens) throws Exception {
         Resource resource = resolver.getResource(path);
@@ -129,9 +128,9 @@
         }
         Options options = getOptions(optionTokens);
         Map bMap = null;
-        if (options.bindings != null) {
+        if (options.with != null) {
             bMap = new HashMap();
-            writeToMap(bMap, options.bindings);
+            writeToMap(bMap, options.with);
         }
         OutputWriter writer = new NopWriter();
         if (options.writer != null){
@@ -155,11 +154,11 @@
                                                     "\n\t'name pipeName' (used in bindings), " +
                                                     "\n\t'expr pipeExpression' (when not directly as <args>)" +
                                                     "\n\t'path pipePath' (when not directly as <args>)" +
-                                                    "\n\t'bindings key=value ...'" +
+                                                    "\n\t'with key=value ...'" +
                                                     "\n\t'outputs key=value ...'" +
                                                     "\n and <pipe> is one of the following :\n");
         for (Map.Entry<String, PipeExecutor> entry : getExecutorMap().entrySet()){
-            System.out.format("\t%s : %s\n", entry.getKey(), entry.getValue().description() );
+            System.out.format("\t%s\t\t:\t%s\n", entry.getKey(), entry.getValue().description() );
         }
     }
 
@@ -286,8 +285,10 @@
                         returnValue.add(currentToken);
                         break;
                     case GogoCommands.PARAMS:
-                        currentToken.args = currentList;
-                        currentList = new ArrayList();
+                        if (currentToken.args == null){
+                            currentToken.args = currentList;
+                            currentList = new ArrayList();
+                        }
                         currentList.add(PARAMS);
                         break;
                     default:
@@ -355,7 +356,7 @@
         String name;
         String path;
         String expr;
-        String[] bindings;
+        String[] with;
         OutputWriter writer;
 
         @Override
@@ -364,7 +365,7 @@
                     "name='" + name + '\'' +
                     ", path='" + path + '\'' +
                     ", expr='" + expr + '\'' +
-                    ", bindings=" + Arrays.toString(bindings) +
+                    ", with=" + Arrays.toString(with) +
                     ", writer=" + writer +
                     '}';
         }
@@ -404,7 +405,7 @@
                         break;
                     }
                     case "with" : {
-                        this.bindings = keyValuesToArray((List<String>)entry.getValue());
+                        this.with = keyValuesToArray((List<String>)entry.getValue());
                         break;
                     }
                     case "outputs" : {
@@ -454,8 +455,8 @@
             if (StringUtils.isNotBlank(expr)){
                 builder.expr(expr);
             }
-            if (bindings != null){
-                builder.with(bindings);
+            if (with != null){
+                builder.with(with);
             }
         }
     }
diff --git a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
index 5e2293b..9793930 100644
--- a/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
+++ b/src/main/java/org/apache/sling/pipes/internal/WritePipe.java
@@ -114,6 +114,7 @@
      * @param key property to which value will be written
      * @param expression configured value to write
      * @return actual value to write to the resource
+     * @throws ScriptException in case value computation went wrong
      */
     protected Object computeValue(Resource resource, String key, Object expression) throws ScriptException {
         if (expression instanceof String) {
diff --git a/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java b/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
index ef838af..350c400 100644
--- a/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
+++ b/src/test/java/org/apache/sling/pipes/internal/GogoCommandsTest.java
@@ -81,9 +81,9 @@
         assertEquals("check expr", expected, options.expr);
         assertEquals("check path", expected, options.path);
         Map bindings = new HashMap();
-        CommandUtil.writeToMap(bindings, options.bindings);
-        assertEquals("check bindings first", expected, bindings.get("one"));
-        assertEquals("check bindings second", expected, bindings.get("two"));
+        CommandUtil.writeToMap(bindings, options.with);
+        assertEquals("check with first", expected, bindings.get("one"));
+        assertEquals("check with second", expected, bindings.get("two"));
         assertNotNull("a writer should have been created", options.writer);
         Map outputs = options.writer.getCustomOutputs();
         assertEquals("check writer first", expected, outputs.get("one"));
@@ -96,8 +96,8 @@
         String optionString = "@ with one=works @ outputs one=works";
         GogoCommands.Options options = commands.getOptions(optionString.split("\\s"));
         Map bindings = new HashMap();
-        CommandUtil.writeToMap(bindings, options.bindings);
-        assertEquals("check bindings first", expected, bindings.get("one"));
+        CommandUtil.writeToMap(bindings, options.with);
+        assertEquals("check with first", expected, bindings.get("one"));
         assertNotNull("a writer should have been created", options.writer);
         Map outputs = options.writer.getCustomOutputs();
         assertEquals("check writer first", expected, outputs.get("one"));
@@ -114,6 +114,16 @@
     }
 
     @Test
+    public void adaptToDemoTest() throws Exception {
+        String url = "'http://99-bottles-of-beer.net/lyrics.html'";
+        String cmd = "egrep " + url + " @ name bottles @ with 'pattern=(?<number>\\d(\\d)?)' / mkdir '/var/bottles/${bottles.number}'";
+        PipeBuilder builder = commands.parse(context.resourceResolver(), cmd.split("\\s"));
+        ContainerPipe pipe = (ContainerPipe)builder.build();
+        ValueMap regexp = pipe.getResource().getChild("conf/bottles").getValueMap();
+        assertEquals("we expect expr to be the url", url, regexp.get("expr"));
+    }
+
+    @Test
     public void testExecuteWithWriter() throws Exception {
         PipeBuilder builder = plumber.newPipe(context.resourceResolver()).echo("/content/${node}").$("nt:base");
         String path = builder.build().getResource().getPath();