File: x

package info (click to toggle)
rustc 1.86.0%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, forky, sid
  • size: 913,560 kB
  • sloc: xml: 158,127; python: 35,921; javascript: 19,689; sh: 19,600; cpp: 18,906; ansic: 13,124; asm: 4,376; makefile: 708; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (45 lines) | stat: -rwxr-xr-x 1,258 bytes parent folder | download | duplicates (3)
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
39
40
41
42
43
44
45
#!/bin/sh

# Modern Linux and macOS systems commonly only have a thing called `python3` and
# not `python`, while Windows commonly does not have `python3`, so we cannot
# directly use python in the x.py shebang and have it consistently work. Instead we
# have a shell script to look for a python to run x.py.

set -eu

# syntax check
sh -n "$0"

realpath() {
    local path="$1"
    if [ -L "$path" ]; then
        readlink -f "$path"
    elif [ -d "$path" ]; then
        (cd -P "$path" && pwd)
    else
        echo "$(realpath "$(dirname "$path")")/$(basename "$path")"
    fi
}

xpy=$(dirname "$(realpath "$0")")/x.py

# On Windows, `py -3` sometimes works. We need to try it first because `python3`
# sometimes tries to launch the app store on Windows.
for SEARCH_PYTHON in py python3 python python2; do
    if python=$(command -v $SEARCH_PYTHON) && [ -x "$python" ]; then
        if [ $SEARCH_PYTHON = py ]; then
            extra_arg="-3"
        else
            extra_arg=""
        fi
        exec "$python" $extra_arg "$xpy" "$@"
    fi
done

python=$(bash -c "compgen -c python" | grep '^python[2-3]\.[0-9]+$' | head -n1)
if ! [ "$python" = "" ]; then
    exec "$python" "$xpy" "$@"
fi

echo "$0: error: did not find python installed" >&2
exit 1