[verible] Add option to run on specified files to verible-format.sh

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/util/verible-format.sh b/util/verible-format.sh
index e739842..72916f3 100755
--- a/util/verible-format.sh
+++ b/util/verible-format.sh
@@ -3,10 +3,20 @@
 # Licensed under the Apache License, Version 2.0, see LICENSE for details.
 # SPDX-License-Identifier: Apache-2.0
 #
-# this script runs the verible formatter on all system verilog
-# files under hw/{ip,vendor,top_earlgrey}
+# Helper script to invoke the Verible formatter with the proper
+# configuration for OpenTitan.
 #
-# make sure to invoke this tool from the project root.
+# Arguments:
+#
+# --files|-f <file1> <file2> ...:
+#   Run the formatter on individual files.
+#
+# --allowlist|-l:
+#   Run the formatter on the files defined in
+#   util/verible-format-allowlist.txt
+#
+# --all|-a:
+#   Run the formatter on all *.sv and *.svh files in the tree.
 #
 # NOTE: this operates in-place - so make sure to make a backup or
 # run this on an experimental branch
@@ -27,39 +37,37 @@
     exit 1
 fi
 
-# this is a precaution in order to prevent accidental
-# overwriting of uncomitted changes
-git add -u
+# --allowlist and --all are run in the repo root
+REPO_TOP=`git rev-parse --show-toplevel`
 
-# By default format only files in allow list
-MODE=${MODE:-allowlist}
-
-case $MODE in
-    allowlist)
-        FILES_TO_FORMAT=`grep -v '^#' util/verible-format-allowlist.txt`
-        ;;
-
-    all)
-        # get all system verilog files and pipe through style formatter
-        FILES_TO_FORMAT=`find . -type f -name "*.sv" -o -name "*.svh"`
-        ;;
-
-    *)
-        echo "verible-format.sh: Unknown mode $MODE"
-        exit 1
-        ;;
-esac
+# select files to format
+FILES_TO_FORMAT=""
+while [ "$1" != "" ]; do
+    case "$1" in
+        --files|-f)
+            shift 1
+            while [ "$1" != "" ]; do
+                FILES_TO_FORMAT="${FILES_TO_FORMAT}${1} "
+                shift 1
+            done
+            ;;
+        --allowlist|-l)
+            cd $REPO_TOP
+            FILES_TO_FORMAT=`grep -v '^#' util/verible-format-allowlist.txt`
+            break
+            ;;
+        --all|-a)
+            cd $REPO_TOP
+            FILES_TO_FORMAT=`find . -type f -name "*.sv" -o -name "*.svh"`
+            break
+            ;;
+        --*|-*)
+            echo "Error: unsupported flag $1" >&2
+            exit 1
+            ;;
+    esac
+done
 
 echo $FILES_TO_FORMAT | \
       xargs -n 1 -P $NUM_PROCS verible-verilog-format \
       $VERIBLE_ARGS
-
-
-echo "Using verible-verilog-format version $VERIBLE_VERSION" > $REPORT_FILE
-
-# report changed files
-git status                  | \
-    grep modified           | \
-    grep dv                 | \
-    awk -F ' ' '{print $2}' | \
-    tee -a $REPORT_FILE