From 2731540147ff92bd5695bca3ca5534757af11ba2 Mon Sep 17 00:00:00 2001 From: Markus Fleschutz Date: Sun, 15 Oct 2023 12:01:45 +0200 Subject: [PATCH] Update clean-repos.ps1 --- Scripts/clean-repos.ps1 | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/Scripts/clean-repos.ps1 b/Scripts/clean-repos.ps1 index c25ecd85..75c104f8 100755 --- a/Scripts/clean-repos.ps1 +++ b/Scripts/clean-repos.ps1 @@ -3,46 +3,50 @@ Cleans all Git repositories in a folder from untracked files .DESCRIPTION This PowerShell script cleans all Git repositories in a folder from untracked files (including submodules). -.PARAMETER ParentDir - Specifies the path to the parent folder +.PARAMETER parentDir + Specifies the path to the parent folder (current working dir by default) .EXAMPLE - PS> ./clean-repos C:\MyRepos + PS> ./clean-repos.ps1 C:\MyRepos + ⏳ (1) Searching for Git executable... git version 2.40.1 + ⏳ (2) Checking parent folder πŸ“‚Repos... 28 subfolders found + ⏳ (3/30) Cleaning πŸ“‚base256unicode... + ... .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> -param([string]$ParentDir = "$PWD") +param([string]$parentDir = "$PWD") try { - $StopWatch = [system.diagnostics.stopwatch]::startNew() + $stopWatch = [system.diagnostics.stopwatch]::startNew() - Write-Host "⏳ (1) Searching for Git executable... " -noNewline + Write-Host "⏳ (1) Searching for Git executable... " -noNewline & git --version if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" } - $ParentDirName = (Get-Item "$ParentDir").Name - Write-Host "⏳ (2) Checking parent folder πŸ“‚$ParentDirName... " -noNewline + $parentDirName = (Get-Item "$ParentDir").Name + Write-Host "⏳ (2) Checking parent folder πŸ“‚$parentDirName... " -noNewline if (-not(Test-Path "$ParentDir" -pathType container)) { throw "Can't access folder: $ParentDir" } - $Folders = (Get-ChildItem "$ParentDir" -attributes Directory) - $NumFolders = $Folders.Count - Write-Host "$NumFolders subfolders found" + $folders = (Get-ChildItem "$ParentDir" -attributes Directory) + $numFolders = $folders.Count + Write-Host "$numFolders subfolders found" [int]$Step = 2 - foreach ($Folder in $Folders) { - $FolderName = (Get-Item "$Folder").Name + foreach ($folder in $folders) { + $FolderName = (Get-Item "$folder").Name $Step++ - "⏳ ($Step/$($NumFolders + 2)) Cleaning πŸ“‚$FolderName..." + "⏳ ($Step/$($numFolders + 2)) Cleaning πŸ“‚$FolderName..." - & git -C "$Folder" clean -xfd -f # force + recurse into dirs + don't use the standard ignore rules + & git -C "$folder" clean -xfd -f # force + recurse into dirs + don't use the standard ignore rules if ($lastExitCode -ne "0") { throw "'git clean -xfd -f' failed with exit code $lastExitCode" } - & git -C "$Folder" submodule foreach --recursive git clean -xfd -f + & git -C "$folder" submodule foreach --recursive git clean -xfd -f if ($lastExitCode -ne "0") { throw "'git clean -xfd -f' in submodules failed with exit code $lastExitCode" } } - [int]$Elapsed = $StopWatch.Elapsed.TotalSeconds - "βœ”οΈ cleaned $NumFolders Git repositories at πŸ“‚$ParentDirName in $Elapsed sec." + [int]$elapsed = $stopWatch.Elapsed.TotalSeconds + "βœ”οΈ Cleaned $numFolders Git repos under πŸ“‚$parentDirName in $elapsed sec" exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"