Public/Set-UnixLineEnding.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function Set-UnixLineEnding {
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='High')]
    param(
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [string[]]
        $Path
    )
    
    begin {
        if (-not $PSBoundParameters.ContainsKey('Confirm')) {
            $ConfirmPreference = $PSCmdlet.SessionState.PSVariable.GetValue('ConfirmPreference')
        }
        if (-not $PSBoundParameters.ContainsKey('WhatIf')) {
            $WhatIfPreference = $PSCmdlet.SessionState.PSVariable.GetValue('WhatIfPreference')
        }
    }
    
    process {
        foreach ($FilePath in $Path) {
            Write-Verbose ('Processing {0}' -f $FilePath)

            $OriginalContent = Get-Content -Raw -Path $FilePath
            $OriginalBytes = [System.Text.Encoding]::ASCII.GetBytes($OriginalContent)
            #$OriginalBytes -join ','
    
            $NormalizedBytes = $OriginalBytes | Where-Object { $_ -ne 13 }
            #$NormalizedBytes -join ','

            $NormalizedContent = [System.Text.Encoding]::ASCII.GetString($NormalizedBytes)
            #$NormalizedContent

            if ($Force -or $PSCmdlet.ShouldProcess("Overwrite file '$FilePath'?")) {
                Set-Content -Value $NormalizedContent -Path $FilePath
            }
        }
    }
}