From 703bce2d009845c79604fe7a264be1d3aa4e0401 Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Fri, 13 Oct 2017 13:09:50 +0200
Subject: [PATCH] Fix PostBuild.ps1 errors not causing failed build & refactor

---
 Resources/PostBuild.ps1 | 61 +++++++++++++++++++++++------------------
 1 file changed, 35 insertions(+), 26 deletions(-)

diff --git a/Resources/PostBuild.ps1 b/Resources/PostBuild.ps1
index 5c289465..8ff64012 100644
--- a/Resources/PostBuild.ps1
+++ b/Resources/PostBuild.ps1
@@ -3,6 +3,17 @@ $ErrorActionPreference = "Stop"
 
 Set-Location $dir
 
+function Check-Carriage-Return{
+  Param([Parameter(Mandatory = $True, Position = 1)] $fname)
+  
+  $file = @(Get-ChildItem -Include $fname -Recurse)[0]
+  Write-Host "Checking" $file.FullName.Substring($dir.Length)
+  
+  if ((Get-Content -Path $file.FullName -Raw).Contains("`r")){
+    Throw "$fname cannot contain carriage return"
+  }
+}
+
 function Rewrite-File{
   [CmdletBinding()]
   Param([Parameter(Mandatory = $True, ValueFromPipeline = $True)][array] $lines, [Parameter(Mandatory = $True, Position = 1)] $file)
@@ -11,33 +22,31 @@ function Rewrite-File{
   Write-Host "Processed" $file.FullName.Substring($dir.Length)
 }
 
-ForEach($file in Get-ChildItem -Include emoji-ordering.txt -Recurse){
-  Write-Host "Checking" $file.FullName.Substring($dir.Length)
-  $data = Get-Content -Path $file.FullName -Raw
-  
-  if ($data.Contains("`r")){
-    Write-Host "Text files cannot contain carriage return"
-    Exit 1
+try{
+  Check-Carriage-Return("emoji-ordering.txt")
+
+  ForEach($file in Get-ChildItem -Filter *.js -Exclude configuration.default.js -Recurse){
+    $lines = Get-Content -Path $file.FullName
+    $lines = $lines | % { $_.TrimStart() }
+    $lines = $lines -Replace '^(.*?)((?<=^|[;{}()])\s?//(?:\s.*|$))?$', '$1'
+    $lines = $lines -Replace '(?<!\w)return(\s.*?)? if (.*?);', 'if ($2)return$1;'
+    ,$lines | Rewrite-File $file
   }
-}
 
-ForEach($file in Get-ChildItem -Include *.js -Exclude configuration.default.js -Recurse){
-  $lines = Get-Content -Path $file.FullName
-  $lines = $lines | % { $_.TrimStart() }
-  $lines = $lines -Replace '^(.*?)((?<=^|[;{}()])\s?//(?:\s.*|$))?$', '$1'
-  $lines = $lines -Replace '(?<!\w)return(\s.*?)? if (.*?);', 'if ($2)return$1;'
-  ,$lines | Rewrite-File $file
-}
+  ForEach($file in Get-ChildItem -Filter *.css -Recurse){
+    $lines = Get-Content -Path $file.FullName
+    $lines = $lines -Replace '\s*/\*.*?\*/', ''
+    $lines = $lines -Replace '^\s+(.+):\s?(.+?)(?:\s?(!important))?;$', '$1:$2$3;'
+    $lines = $lines -Replace '^(\S.*?) {$', '$1{'
+    @(($lines | Where { $_ -ne '' }) -Join ' ') | Rewrite-File $file
+  }
 
-ForEach($file in Get-ChildItem -Include *.css -Recurse){
-  $lines = Get-Content -Path $file.FullName
-  $lines = $lines -Replace '\s*/\*.*?\*/', ''
-  $lines = $lines -Replace '^\s+(.+):\s?(.+?)(?:\s?(!important))?;$', '$1:$2$3;'
-  $lines = $lines -Replace '^(\S.*?) {$', '$1{'
-  @(($lines | Where { $_ -ne '' }) -Join ' ') | Rewrite-File $file
-}
-
-ForEach($file in Get-ChildItem -Include *.html -Recurse){
-  $lines = Get-Content -Path $file.FullName
-  ,($lines | % { $_.TrimStart() }) | Rewrite-File $file
+  ForEach($file in Get-ChildItem -Filter *.html -Recurse){
+    $lines = Get-Content -Path $file.FullName
+    ,($lines | % { $_.TrimStart() }) | Rewrite-File $file
+  }
+}catch{
+  Write-Host "Encountered an error while running PostBuild.ps1 on line" $_.InvocationInfo.ScriptLineNumber
+  Write-Host $_
+  Exit 1
 }