about summary refs log tree commit diff
path: root/x.ps1
diff options
context:
space:
mode:
authorJoshua Nelson <jnelson@cloudflare.com>2022-07-31 14:02:31 -0500
committerJoshua Nelson <jnelson@cloudflare.com>2022-08-08 14:48:11 -0500
commit775c3c0493e9a383a7f1c521b06d36f2e3d0d886 (patch)
tree1ce415b145ade3c3c926e9d671b3e22ec7e5e44b /x.ps1
parente5a7d8f945f4259fb6b8c4953a65248243c054d1 (diff)
downloadrust-775c3c0493e9a383a7f1c521b06d36f2e3d0d886.tar.gz
rust-775c3c0493e9a383a7f1c521b06d36f2e3d0d886.zip
Add `x.sh` and `x.ps1` shell scripts
This is a more ambitious version of https://github.com/rust-lang/rust/pull/98716.
It still changes the shebang back to python3, for compatibility with non-Unix systems,
but also adds alternative entrypoints for systems without `python3` installed.

These scripts will be necessary for the rust entrypoint (#94829), so I see
little downside in adding them early.
Diffstat (limited to 'x.ps1')
-rwxr-xr-xx.ps128
1 files changed, 28 insertions, 0 deletions
diff --git a/x.ps1 b/x.ps1
new file mode 100755
index 00000000000..1225443735f
--- /dev/null
+++ b/x.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+
+# See x.sh for why these scripts exist.
+
+$xpy = Join-Path $PSScriptRoot x.py
+# Start-Process for some reason splits arguments on spaces. (Isn't powershell supposed to be simpler than bash?)
+# Double-quote all the arguments so it doesn't do that.
+$xpy_args = @("""$xpy""")
+foreach ($arg in $args) {
+    $xpy_args += """$arg"""
+}
+
+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-Command $python -ErrorAction SilentlyContinue) {
+        if ($python -eq "py") {
+            # Use python3, not python2
+            $xpy_args = @("-3") + $xpy_args
+        }
+        $process = Start-Process -NoNewWindow -Wait -PassThru $python $xpy_args
+        Exit $process.ExitCode
+    }
+}
+
+Write-Error "${PSCommandPath}: error: did not find python installed"
+Exit 1