78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 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"
 | 
						|
 | 
						|
# Build and install croppa
 | 
						|
cd croppa
 | 
						|
uv tool uninstall croppa >/dev/null 2>&1 || true
 | 
						|
uv build --wheel --out-dir dist
 | 
						|
CROPPA_WHEEL=$(ls -1 dist/croppa-*.whl | tail -n 1)
 | 
						|
uv tool install "$CROPPA_WHEEL"
 | 
						|
cd ..
 | 
						|
 | 
						|
# Resolve uv tool install location (Linux/macOS and Windows Git Bash)
 | 
						|
SRC=""
 | 
						|
CROPPA_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
 | 
						|
 | 
						|
if [ -d "$HOME/.local/share/uv/tools/croppa/bin" ]; then
 | 
						|
  CROPPA_SRC="$HOME/.local/share/uv/tools/croppa/bin"
 | 
						|
elif [ -n "$APPDATA_U" ] && [ -d "$APPDATA_U/uv/tools/croppa/Scripts" ]; then
 | 
						|
  CROPPA_SRC="$APPDATA_U/uv/tools/croppa/Scripts"
 | 
						|
elif [ -d "$HOME/AppData/Roaming/uv/tools/croppa/Scripts" ]; then
 | 
						|
  CROPPA_SRC="$HOME/AppData/Roaming/uv/tools/croppa/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
 | 
						|
 | 
						|
if [ -n "$CROPPA_SRC" ]; then
 | 
						|
  if [ -f "$CROPPA_SRC/croppa.exe" ]; then
 | 
						|
    cp -f "$CROPPA_SRC/croppa.exe" "$HOME/.local/bin/croppa.exe"
 | 
						|
  elif [ -f "$CROPPA_SRC/croppa" ]; then
 | 
						|
    cp -f "$CROPPA_SRC/croppa" "$HOME/.local/bin/croppa"
 | 
						|
    chmod +x "$HOME/.local/bin/croppa"
 | 
						|
  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
 | 
						|
which croppa || true
 | 
						|
 | 
						|
echo "grader and croppa installed to $HOME/.local/bin"  |