|
1 | 1 | #!/bin/sh |
2 | | -cd "$(dirname "$(realpath "$0")")" |
3 | | -libpath="" |
| 2 | + |
| 3 | +case "$0" in |
| 4 | + *"EmuHawkMono.sh");; |
| 5 | + *"/bin/"*"sh") |
| 6 | + # Very bad way to detect /path/to/shell |
| 7 | + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" |
| 8 | + # stupid bash workaround |
| 9 | + # shellcheck disable=SC2317 |
| 10 | + return 1 2> /dev/null || exit 1;; |
| 11 | + *"/"*);; |
| 12 | + *) |
| 13 | + echo "I don't know where I am! Could you run me as \"/path/to/EmuHawkMono.sh\"?" |
| 14 | + # shellcheck disable=SC2317 |
| 15 | + return 1 2> /dev/null || exit 1 |
| 16 | +esac |
| 17 | +cd "$(dirname -- "$(realpath -- "$0")")" || ( echo "Can't navigate to \$0's path?" >& 2; exit 1 ) |
| 18 | + |
| 19 | +libpath= |
4 | 20 | if [ "$(command -v lsb_release)" ]; then |
| 21 | + # shellcheck disable=SC2018,SC2019 |
5 | 22 | case "$(lsb_release -i | head -n1 | cut -c17- | tr A-Z a-z)" in |
6 | 23 | "arch"|"artix"|"manjarolinux") libpath="/usr/lib";; |
7 | 24 | "fedora"|"gentoo"|"nobaralinux"|"opensuse") libpath="/usr/lib64";; |
8 | | - "nixos") libpath="/usr/lib"; printf "Running on NixOS? Why aren't you using the Nix expr?\n";; |
| 25 | + "nixos") libpath="/usr/lib"; echo "Running on NixOS? Why aren't you using the Nix expr?" >& 2;; |
9 | 26 | "debian"|"linuxmint"|"pop"|"ubuntu") libpath="/usr/lib/x86_64-linux-gnu";; |
10 | 27 | esac |
11 | 28 | else |
12 | | - printf "Distro does not provide LSB release info API! (You've met with a terrible fate, haven't you?)\n" |
| 29 | + echo "Distro does not provide LSB release info API! (You've met with a terrible fate, haven't you?)" >& 2 |
13 | 30 | fi |
14 | 31 | if [ -z "$libpath" ]; then |
15 | | - printf "%s\n" "Unknown distro, assuming system-wide libraries are in /usr/lib..." |
| 32 | + echo "Unknown distro, assuming system-wide libraries are in /usr/lib..." >& 2 |
16 | 33 | libpath="/usr/lib" |
17 | 34 | fi |
| 35 | + |
| 36 | +export GTK_DATA_PREFIX= |
18 | 37 | export LD_LIBRARY_PATH="$PWD/dll:$PWD:$libpath" |
19 | 38 | export MONO_CRASH_NOFILE=1 |
20 | 39 | export MONO_WINFORMS_XIM_STYLE=disabled # see https://bugzilla.xamarin.com/show_bug.cgi?id=28047#c9 |
| 40 | + |
21 | 41 | if [ "$1" = "--mono-no-redirect" ]; then |
22 | | -# printf "(passing --mono-no-redirect is no longer necessary)\n" #TODO uncomment later |
| 42 | + echo "(passing --mono-no-redirect is no longer necessary)" >& 2 |
23 | 43 | shift |
24 | 44 | fi |
| 45 | +# shellcheck disable=SC2009 |
25 | 46 | if (ps -C "mono" -o "cmd" --no-headers | grep -Fq "EmuHawk.exe"); then |
26 | | - printf "(it seems EmuHawk is already running, NOT capturing output)\n" >&2 |
27 | | - exec mono EmuHawk.exe "$@" |
| 47 | + echo "(it seems EmuHawk is already running, NOT capturing output)" >& 2 |
| 48 | + mono EmuHawk.exe "$@" |
28 | 49 | fi |
| 50 | + |
29 | 51 | o="$(mktemp -u)" |
30 | 52 | e="$(mktemp -u)" |
31 | 53 | mkfifo "$o" "$e" |
32 | | -printf "(capturing output in %s/EmuHawkMono_last*.txt)\n" "$PWD" >&2 |
33 | | -tee EmuHawkMono_laststdout.txt <"$o" & |
34 | | -tee EmuHawkMono_laststderr.txt <"$e" | sed "s/.*/$(tput setaf 1)&$(tput sgr0)/" >&2 & |
35 | | -exec mono EmuHawk.exe "$@" >"$o" 2>"$e" |
| 54 | +echo "(capturing output in $PWD/EmuHawkMono_last*.txt)" >& 2 |
| 55 | +tee EmuHawkMono_laststdout.txt < "$o" & |
| 56 | +tee EmuHawkMono_laststderr.txt < "$e" | sed "s/.*/$(tput setaf 1)&$(tput sgr0)/" >& 2 & |
| 57 | +mono EmuHawk.exe "$@" > "$o" 2> "$e" |
0 commit comments