adding parallel execution to restyle-diff (#34663)

* adding parallel execution to restyle-diff

* using xargs to call restyle-paths

* fixing Copyright year

* restyle the restyler
diff --git a/scripts/helpers/restyle-diff.sh b/scripts/helpers/restyle-diff.sh
index 5cc9ffa..5f37c69 100755
--- a/scripts/helpers/restyle-diff.sh
+++ b/scripts/helpers/restyle-diff.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
 #
-# Copyright (c) 2020 Project CHIP Authors
+# Copyright (c) 2020-2024 Project CHIP Authors
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,57 +21,54 @@
 #  you've written is kosher to CI
 #
 # Usage:
-#  restyle-diff.sh [-d] [ref]
+#  restyle-diff.sh [-d] [-p] [ref]
 #
 # if unspecified, ref defaults to upstream/master (or master)
 # -d sets container's log level to DEBUG, if unspecified the default log level will remain (info level)
+# -p pulls the Docker image before running the restyle paths
 #
 
 here=${0%/*}
 
 set -e
 
+MAX_ARGS=256
+pull_image=0
+
 CHIP_ROOT=$(cd "$here/../.." && pwd)
 cd "$CHIP_ROOT"
 
-docker_run() {
-    if [ -t 0 ]; then
-        exec docker run --tty "$@"
-
-    else
-        exec docker run "$@"
-
-    fi
-}
-
 restyle-paths() {
-
     image=restyled/restyler:edge
 
-    for path in "$@"; do
-        (
-            docker_run --tty --interactive --rm \
-                --env LOG_LEVEL \
-                --env LOG_DESTINATION \
-                --env LOG_FORMAT \
-                --env LOG_COLOR \
-                --env HOST_DIRECTORY="$PWD" \
-                --env UNRESTRICTED=1 \
-                --volume "$PWD":/code \
-                --volume /tmp:/tmp \
-                --volume /var/run/docker.sock:/var/run/docker.sock \
-                --entrypoint restyle-path \
-                "$image" "$path"
-        )
-    done
+    docker run \
+        --env LOG_LEVEL \
+        --env LOG_DESTINATION \
+        --env LOG_FORMAT \
+        --env LOG_COLOR \
+        --env HOST_DIRECTORY="$PWD" \
+        --env UNRESTRICTED=1 \
+        --volume "$PWD":/code \
+        --volume /tmp:/tmp \
+        --volume /var/run/docker.sock:/var/run/docker.sock \
+        --entrypoint restyle-path \
+        "$image" "$@"
+
 }
 
+#This was added to be able to use xargs to call the function restyle-paths
+export -f restyle-paths
+
 while [[ $# -gt 0 ]]; do
     case "$1" in
         -d)
             export LOG_LEVEL="DEBUG"
             shift
             ;;
+        -p)
+            pull_image=1
+            shift
+            ;;
         *)
             ref="$1"
             shift
@@ -81,8 +78,13 @@
 
 if [[ -z "$ref" ]]; then
     ref="master"
-    git remote | grep -qxF upstream && ref="upstream/master"
+    git remote | grep -qxF upstream && ref="upstream/master" && git fetch upstream
 fi
 
-mapfile -t paths < <(git diff --ignore-submodules --name-only --merge-base "$ref")
-restyle-paths "${paths[@]}"
+if [[ $pull_image -eq 1 ]]; then
+    docker pull restyled/restyler:edge
+fi
+
+paths=$(git diff --ignore-submodules --name-only --merge-base "$ref")
+
+echo "$paths" | xargs -n "$MAX_ARGS" bash -c 'restyle-paths "$@"'