From fb318fb3f841000e323aad6379963941ad37204c Mon Sep 17 00:00:00 2001
From: jok <jok@reliable.co>
Date: Fri, 14 Oct 2022 14:02:30 -0700
Subject: [PATCH] wrap pipeline commands for submoduleForeach in quotes

---
 src/git-auth-helper.ts | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/git-auth-helper.ts b/src/git-auth-helper.ts
index 3c6db8e..192a9d8 100644
--- a/src/git-auth-helper.ts
+++ b/src/git-auth-helper.ts
@@ -157,7 +157,8 @@ class GitAuthHelper {
       // by process creation audit events, which are commonly logged. For more information,
       // refer to https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
       const output = await this.git.submoduleForeach(
-        `git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url`,
+        // wrap the pipeline in quotes to make sure it's handled properly by submoduleForeach, rather than just the first part of the pipeline
+        `"git config --local '${this.tokenConfigKey}' '${this.tokenPlaceholderConfigValue}' && git config --local --show-origin --name-only --get-regexp remote.origin.url"`,
         this.settings.nestedSubmodules
       )
 
@@ -365,7 +366,8 @@ class GitAuthHelper {
 
     const pattern = regexpHelper.escape(configKey)
     await this.git.submoduleForeach(
-      `git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || :`,
+      // wrap the pipeline in quotes to make sure it's handled properly by submoduleForeach, rather than just the first part of the pipeline
+      `"git config --local --name-only --get-regexp '${pattern}' && git config --local --unset-all '${configKey}' || : "`,
       true
     )
   }