mirror of
				https://github.com/actions/setup-go.git
				synced 2025-11-04 09:16:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
[CmdletBinding()]
 | 
						|
param(
 | 
						|
    [Parameter(Mandatory = $true)]
 | 
						|
    [string]$Source,
 | 
						|
 | 
						|
    [Parameter(Mandatory = $true)]
 | 
						|
    [string]$Target)
 | 
						|
 | 
						|
# This script translates the output from 7zdec into UTF8. Node has limited
 | 
						|
# built-in support for encodings.
 | 
						|
#
 | 
						|
# 7zdec uses the system default code page. The system default code page varies
 | 
						|
# depending on the locale configuration. On an en-US box, the system default code
 | 
						|
# page is Windows-1252.
 | 
						|
#
 | 
						|
# Note, on a typical en-US box, testing with the 'ç' character is a good way to
 | 
						|
# determine whether data is passed correctly between processes. This is because
 | 
						|
# the 'ç' character has a different code point across each of the common encodings
 | 
						|
# on a typical en-US box, i.e.
 | 
						|
#   1) the default console-output code page (IBM437)
 | 
						|
#   2) the system default code page (i.e. CP_ACP) (Windows-1252)
 | 
						|
#   3) UTF8
 | 
						|
 | 
						|
$ErrorActionPreference = 'Stop'
 | 
						|
 | 
						|
# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default.
 | 
						|
$stdout = [System.Console]::OpenStandardOutput()
 | 
						|
$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM
 | 
						|
$writer = New-Object System.IO.StreamWriter($stdout, $utf8)
 | 
						|
[System.Console]::SetOut($writer)
 | 
						|
 | 
						|
# All subsequent output must be written using [System.Console]::WriteLine(). In
 | 
						|
# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer.
 | 
						|
 | 
						|
Set-Location -LiteralPath $Target
 | 
						|
 | 
						|
# Print the ##command.
 | 
						|
$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe"
 | 
						|
[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"")
 | 
						|
 | 
						|
# The $OutputEncoding variable instructs PowerShell how to interpret the output
 | 
						|
# from the external command.
 | 
						|
$OutputEncoding = [System.Text.Encoding]::Default
 | 
						|
 | 
						|
# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe
 | 
						|
# will launch the external command in such a way that it inherits the streams.
 | 
						|
& $_7zdec x $Source 2>&1 |
 | 
						|
    ForEach-Object {
 | 
						|
        if ($_ -is [System.Management.Automation.ErrorRecord]) {
 | 
						|
            [System.Console]::WriteLine($_.Exception.Message)
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            [System.Console]::WriteLine($_)
 | 
						|
        }
 | 
						|
    }
 | 
						|
[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'")
 | 
						|
[System.Console]::Out.Flush()
 | 
						|
if ($LASTEXITCODE -ne 0) {
 | 
						|
    exit $LASTEXITCODE
 | 
						|
} |