SDL_image: Create Get-GitModules.ps1

From b3fcae23a051afda2ce0fae27985e5e432491f04 Mon Sep 17 00:00:00 2001
From: Tonia Sanzo <[EMAIL REDACTED]>
Date: Tue, 7 Nov 2023 11:20:17 -0500
Subject: [PATCH] Create Get-GitModules.ps1

---
 external/Get-GitModules.ps1 | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 external/Get-GitModules.ps1

diff --git a/external/Get-GitModules.ps1 b/external/Get-GitModules.ps1
new file mode 100644
index 00000000..c43f6375
--- /dev/null
+++ b/external/Get-GitModules.ps1
@@ -0,0 +1,36 @@
+<#
+  .SYNOPSIS
+  Downloads the Git modules specified in ../.gitmodules
+
+  .DESCRIPTION
+  Parses and downloads the Github repositories specified in the .gitmodules file
+
+  .EXAMPLE
+  PS> .\Get-GitModules.ps1
+  < Downloads and parses the repositories in the .gitmodules file. >
+#>
+
+#------- Variables -------------------------------------------------------------
+[String] $PathRegex   = "path\s*=\s*(?<path>.*)"
+[String] $URLRegex    = "url\s*=\s*(?<url>.*)" 
+[String] $BranchRegex = "branch\s*=\s*(?<Branch>.*)"
+
+#------- Script ----------------------------------------------------------------
+foreach ($Line in Get-Content $PSScriptRoot\..\.gitmodules) {
+    if ($Line -match $PathRegex) {
+        $Match  = Select-String -InputObject $Line -Pattern $PathRegex
+        $Path   = $Match.Matches[0].Groups[1].Value
+    }
+    elseif ($Line -match $URLRegex) {
+        $Match  = Select-String -InputObject $Line -Pattern $URLRegex
+        $URL    = $Match.Matches[0].Groups[1].Value
+    }
+    elseif ($Line -match $BranchRegex) {
+        $Match  = Select-String -InputObject $Line -Pattern $BranchRegex
+        $Branch = $Match.Matches[0].Groups[1].Value
+        
+        Write-Host "git clone $URL $Path -b $Branch --recursive" `
+            -ForegroundColor Blue
+        git clone $URL $PSScriptRoot/../$Path -b $Branch --recursive
+    }
+}