mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 04:24:26 +00:00 
			
		
		
		
	 2cf54e9f99
			
		
	
	
		2cf54e9f99
		
	
	
	
	
		
			
			start-process has weird parsing rules and buggy behavior. we've already had to work around them several times, and the workarounds were not complete.
i wonder who could have added it HMMMMMM
```
PS C:\Users\jyn\src\rust> git log --reverse -S Start-Process x.ps1
commit 775c3c0493e9a383a7f1c521b06d36f2e3d0d886
Author: Jynn Nelson <github@jyn.dev>
Date:   Sun Jul 31 14:02:31 2022 -0500
    Add `x.sh` and `x.ps1` shell scripts
```
the latest broken thing is trailing backslashes:
```
$ x.ps1 t .\tests\ui\error-emitter\
```
would be transformed into
```
['t', '.\\tests\\ui\\error-emitter"']
```
rather than trying to hack around that too, abandon start-process altogether and just use `&`.
		
	
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env pwsh
 | |
| 
 | |
| # See ./x for why these scripts exist.
 | |
| 
 | |
| $ErrorActionPreference = "Stop"
 | |
| 
 | |
| # syntax check
 | |
| Get-Command -syntax ${PSCommandPath} >$null
 | |
| 
 | |
| $xpy = Join-Path $PSScriptRoot x.py
 | |
| $xpy_args = @($xpy) + $args
 | |
| 
 | |
| function Get-Application($app) {
 | |
|     $cmd = Get-Command $app -ErrorAction SilentlyContinue -CommandType Application | Select-Object -First 1
 | |
|     return $cmd
 | |
| }
 | |
| 
 | |
| function Invoke-Application($application, $arguments) {
 | |
|     & $application $arguments
 | |
|     Exit $LASTEXITCODE
 | |
| }
 | |
| 
 | |
| foreach ($python in "py", "python3", "python", "python2") {
 | |
|     # NOTE: this only tests that the command exists in PATH, not that it's actually
 | |
|     # executable. The latter is not possible in a portable way, see
 | |
|     # https://github.com/PowerShell/PowerShell/issues/12625.
 | |
|     if (Get-Application $python) {
 | |
|         if ($python -eq "py") {
 | |
|             # Use python3, not python2
 | |
|             $xpy_args = @("-3") + $xpy_args
 | |
|         }
 | |
|         Invoke-Application $python $xpy_args
 | |
|     }
 | |
| }
 | |
| 
 | |
| $found = (Get-Application "python*" | Where-Object {$_.name -match '^python[2-3]\.[0-9]+(\.exe)?$'})
 | |
| if (($null -ne $found) -and ($found.Length -ge 1)) {
 | |
|     $python = $found[0]
 | |
|     Invoke-Application $python $xpy_args
 | |
| }
 | |
| 
 | |
| $msg = "${PSCommandPath}: error: did not find python installed`n"
 | |
| $msg += "help: consider installing it from https://www.python.org/downloads/"
 | |
| Write-Error $msg -Category NotInstalled
 | |
| Exit 1
 |