mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-28 04:50:32 +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
 | |
| } | 
