mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-06-28 17:14:45 -05:00
Improve Compile Script a bit Deduplicating a lot of un-needed pre-fixes - Improve implementation for 'Invoke-Preprocessing' Script Tool
This commit is contained in:
@ -73,6 +73,18 @@
|
||||
}
|
||||
|
||||
$count = $ExcludedFiles.Count
|
||||
|
||||
# Make sure there's a * at the end of folders in ExcludedFiles list
|
||||
if ($count -gt 0) {
|
||||
for ($i = 0; $i -lt $count; $i++) {
|
||||
$excludedFile = $ExcludedFiles[$i]
|
||||
$isFolder = ($excludedFile) -match '\\$'
|
||||
if ($isFolder) { $ExcludedFiles[$i] = $excludedFile + '*' }
|
||||
}
|
||||
}
|
||||
|
||||
# Validate the ExcludedFiles List before continuing on,
|
||||
# that's if there's a list in the first place, and '-SkipExcludedFilesValidation' was not provided.
|
||||
if ((-NOT ($count -eq 0)) -AND (-NOT $SkipExcludedFilesValidation)) {
|
||||
for ($i = 0; $i -lt $count; $i++) {
|
||||
$excludedFile = $ExcludedFiles[$i]
|
||||
@ -83,11 +95,49 @@
|
||||
}
|
||||
$failedFilesList = $failedFilesList -replace (',\s*$', '')
|
||||
if (-NOT $failedFilesList -eq "") {
|
||||
throw "[Invoke-Preprocessing] One or more File Paths & File Patterns were not found, you can use '-SkipExcludedFilesValidation' switch to skip this check, and the failed files are: $failedFilesList"
|
||||
throw "[Invoke-Preprocessing] One or more File Paths and/or File Patterns were not found, you can use '-SkipExcludedFilesValidation' switch to skip this check, the failed to validate are: $failedFilesList"
|
||||
}
|
||||
}
|
||||
|
||||
$files = Get-ChildItem $WorkingDir -Recurse -Exclude $ExcludedFiles -File
|
||||
# Get Files List
|
||||
[System.Collections.ArrayList]$files = Get-ChildItem $WorkingDir -Recurse -Exclude $ExcludedFiles -File
|
||||
$numOfFiles = $files.Count
|
||||
|
||||
# Only keep the 'FullName' Property for every entry in the list
|
||||
for ($i = 0; $i -lt $numOfFiles; $i++) {
|
||||
$file = $files[$i]
|
||||
$files[$i] = $file.FullName
|
||||
}
|
||||
|
||||
# If a file(s) are found in Exclude List,
|
||||
# Remove the file from files list.
|
||||
for ($j = 0; $j -lt $excludedFiles.Count; $j++) {
|
||||
# Prepare some variables
|
||||
$excluded = $excludedFiles[$j]
|
||||
$pathToFind = ($excluded) -replace ('^\.\\', '')
|
||||
$pathToFind = $WorkingDir + '\' + $pathToFind
|
||||
$index = -1 # reset index on every iteration
|
||||
|
||||
# Handle paths with wildcards in a different implementation
|
||||
$matches = ($pathToFind) -match '^.*?\*'
|
||||
|
||||
if ($matches) {
|
||||
$filesToCheck = Get-ChildItem -Recurse -Path "$pathToFind" -File
|
||||
if ($filesToCheck) {
|
||||
for ($k = 0; $k -lt $filesToCheck.Count; $k++) {
|
||||
$fileToCheck = $filesToCheck[$k]
|
||||
$index = $files.IndexOf("$fileToCheck")
|
||||
if ($index -ge 0) { $files.RemoveAt($index) }
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$index = $files.IndexOf("$pathToFind")
|
||||
if ($index -ge 0) { $files.RemoveAt($index) }
|
||||
}
|
||||
}
|
||||
|
||||
# Make sure 'numOfFiles' is synced with the actual Number of Files found in '$files'
|
||||
# This's done because previous may or may not edit the files list, so we should update it
|
||||
$numOfFiles = $files.Count
|
||||
|
||||
if ($numOfFiles -eq 0) {
|
||||
@ -99,26 +149,11 @@
|
||||
}
|
||||
|
||||
for ($i = 0; $i -lt $numOfFiles; $i++) {
|
||||
$file = $files[$i]
|
||||
|
||||
# If the file is in Exclude List, don't proceed to check/modify said file.
|
||||
$fileIsExcluded = $False
|
||||
for ($j = 0; $j -lt $excludedFiles.Count; $j++) {
|
||||
$excluded = $excludedFiles[$j]
|
||||
$strToCompare = ($excluded) -replace ('^\.\\', '')
|
||||
if ($file.FullName.Contains("$strToCompare")) {
|
||||
$fileIsExcluded = $True
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if ($fileIsExcluded) {
|
||||
continue
|
||||
}
|
||||
$fullFileName = $files[$i]
|
||||
|
||||
# TODO:
|
||||
# make more formatting rules, and document them in WinUtil Official Documentation
|
||||
(Get-Content "$file").TrimEnd() `
|
||||
(Get-Content "$fullFileName").TrimEnd() `
|
||||
-replace ('\t', ' ') `
|
||||
-replace ('\)\s*\{', ') {') `
|
||||
-replace ('(?<keyword>if|for|foreach)\s*(?<condition>\([.*?]\))\s*\{', '${keyword} ${condition} {') `
|
||||
@ -130,7 +165,7 @@
|
||||
-replace ('\}\s*Catch\s*(?<exceptions>(\[.*?\]\s*(\,)?\s*)+)\s*\{', '} catch ${exceptions} {') `
|
||||
-replace ('\}\s*Catch\s*(?<exceptions>\[.*?\])\s*\{', '} catch ${exceptions} {') `
|
||||
-replace ('(?<parameter_type>\[.*?\])\s*(?<str_after_type>\$.*?(,|\s*\)))', '${parameter_type}${str_after_type}') `
|
||||
| Set-Content "$file"
|
||||
| Set-Content "$fullFileName"
|
||||
|
||||
Write-Progress -Activity $ProgressActivity -Status "$ProgressStatusMessage - Finished $i out of $numOfFiles" -PercentComplete (($i/$numOfFiles)*100)
|
||||
}
|
||||
|
Reference in New Issue
Block a user