51 lines
1.4 KiB
Bash
51 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Always run from this script's directory
|
|
cd "$(dirname "$0")"
|
|
|
|
# Build a fresh wheel and install it as a uv tool to avoid stale caches
|
|
uv tool uninstall grader >/dev/null 2>&1 || true
|
|
uv build --wheel --out-dir dist
|
|
WHEEL=$(ls -1 dist/grader-*.whl | tail -n 1)
|
|
uv tool install "$WHEEL"
|
|
|
|
# Resolve uv tool install location (Linux/macOS and Windows Git Bash)
|
|
SRC=""
|
|
APPDATA_U=""
|
|
if [ -n "${APPDATA:-}" ]; then
|
|
if command -v cygpath >/dev/null 2>&1; then
|
|
APPDATA_U="$(cygpath -u "$APPDATA")"
|
|
else
|
|
APPDATA_U="$APPDATA"
|
|
fi
|
|
fi
|
|
|
|
if [ -d "$HOME/.local/share/uv/tools/grader/bin" ]; then
|
|
SRC="$HOME/.local/share/uv/tools/grader/bin"
|
|
elif [ -n "$APPDATA_U" ] && [ -d "$APPDATA_U/uv/tools/grader/Scripts" ]; then
|
|
SRC="$APPDATA_U/uv/tools/grader/Scripts"
|
|
elif [ -d "$HOME/AppData/Roaming/uv/tools/grader/Scripts" ]; then
|
|
SRC="$HOME/AppData/Roaming/uv/tools/grader/Scripts"
|
|
fi
|
|
|
|
mkdir -p "$HOME/.local/bin"
|
|
if [ -n "$SRC" ]; then
|
|
if [ -f "$SRC/grader.exe" ]; then
|
|
cp -f "$SRC/grader.exe" "$HOME/.local/bin/grader.exe"
|
|
elif [ -f "$SRC/grader" ]; then
|
|
cp -f "$SRC/grader" "$HOME/.local/bin/grader"
|
|
chmod +x "$HOME/.local/bin/grader"
|
|
fi
|
|
fi
|
|
|
|
case ":${PATH}:" in
|
|
*":$HOME/.local/bin:"*) ;;
|
|
*) export PATH="$HOME/.local/bin:$PATH" ;;
|
|
esac
|
|
|
|
# Refresh shell command cache and print resolution
|
|
hash -r || true
|
|
which grader || true
|
|
|
|
echo "grader installed to $HOME/.local/bin" |