Run multiple jobs/workers by setting env vars (#5924)

* Run multiple jobs/workers by setting env vars

```bash
$ infra/base-images/all.sh
$ python3 infra/helper.py run_fuzzer -e N_JOBS=4 -e N_WORKERS=4 --engine $ENGINE $PROJECT_NAME $FUZZ_TARGET
```

* Switched from N_JOBS/WORKERS to FUZZER_EXTRA_ARGS

* Added hashicorp/hcl/hclsyntax fuzzers

* Getting rid of FUZZER_EXTRA_ARGS
diff --git a/infra/base-images/base-runner/run_fuzzer b/infra/base-images/base-runner/run_fuzzer
index cda877c..426688e 100755
--- a/infra/base-images/base-runner/run_fuzzer
+++ b/infra/base-images/base-runner/run_fuzzer
@@ -120,7 +120,7 @@
   test -e "$OUT/afl++.dict" && AFL_FUZZER_ARGS="$AFL_FUZZER_ARGS -x $OUT/afl++.dict"
   # Ensure timeout is a bit larger than 1sec as some of the OSS-Fuzz fuzzers
   # are slower than this.
-  AFL_FUZZER_ARGS="$AFL_FUZZER_ARGS -t 5000+"
+  AFL_FUZZER_ARGS="$FUZZER_ARGS $AFL_FUZZER_ARGS -t 5000+"
   # AFL expects at least 1 file in the input dir.
   echo input > ${CORPUS_DIR}/input
   echo afl++ setup:
@@ -140,7 +140,7 @@
   # -P: use persistent mode of fuzzing (i.e. LLVMFuzzerTestOneInput)
   # -f: location of the initial (and destination) file corpus
   # -n: number of fuzzing threads (and processes)
-  CMD_LINE="$OUT/honggfuzz -n 1 --exit_upon_crash -R /tmp/${FUZZER}_honggfuzz.report -W $FUZZER_OUT -v -z -P -f \"$CORPUS_DIR\" $(get_dictionary) $* -- \"$OUT/$FUZZER\""
+  CMD_LINE="$OUT/honggfuzz -n 1 --exit_upon_crash -R /tmp/${FUZZER}_honggfuzz.report -W $FUZZER_OUT -v -z -P -f \"$CORPUS_DIR\" $(get_dictionary) $FUZZER_ARGS $* -- \"$OUT/$FUZZER\""
 
 else
 
diff --git a/projects/hcl/Dockerfile b/projects/hcl/Dockerfile
new file mode 100644
index 0000000..122beca
--- /dev/null
+++ b/projects/hcl/Dockerfile
@@ -0,0 +1,20 @@
+# Copyright 2021 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FROM gcr.io/oss-fuzz-base/base-builder-go
+RUN git clone --depth 1 https://github.com/hashicorp/hcl
+COPY build.sh $SRC
+WORKDIR $SRC/hcl
\ No newline at end of file
diff --git a/projects/hcl/build.sh b/projects/hcl/build.sh
new file mode 100644
index 0000000..986e100
--- /dev/null
+++ b/projects/hcl/build.sh
@@ -0,0 +1,36 @@
+#!/bin/bash -eu
+# Copyright 2021 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+FUZZERS_BASE=$SRC/hcl/hclsyntax/fuzz
+FUZZERS_PACKAGE=github.com/hashicorp/hcl/v2/hclsyntax/fuzz
+FUZZER_CLASS=Fuzz
+
+for THE_FUZZER in config expr template traversal
+do
+    THE_FUZZER_NAME="fuzz_"$THE_FUZZER
+    compile_go_fuzzer $FUZZERS_PACKAGE/$THE_FUZZER $FUZZER_CLASS $THE_FUZZER_NAME
+
+    OUTDIR=$OUT/$THE_FUZZER_NAME"_seed_corpus"
+    mkdir $OUTDIR
+    find $FUZZERS_BASE/$THE_FUZZER/corpus -type f | while read FNAME
+    do
+        SHASUM_NAME=$(shasum "$FNAME" | awk '{print $1}')
+        cp "$FNAME" $OUTDIR
+    done
+    zip -r $OUTDIR".zip" $OUTDIR
+    rm -rf $OUTDIR
+done
\ No newline at end of file
diff --git a/projects/hcl/project.yaml b/projects/hcl/project.yaml
new file mode 100644
index 0000000..4abeeb5
--- /dev/null
+++ b/projects/hcl/project.yaml
@@ -0,0 +1,10 @@
+homepage: "https://github.com/hashicorp/hcl"
+language: go
+auto_ccs:
+  - federico.maggi@gmail.com
+fuzzing_engines:
+  - libfuzzer
+sanitizers:
+  - address
+primary_contact: "security@hashicorp.com"
+main_repo: 'https://github.com/hashicorp/hcl'
\ No newline at end of file