From d62fbb055eb641c27af3811b568a487f617aed7d Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Tue, 19 Aug 2025 09:03:47 +0200 Subject: [PATCH] feat(deploy): add croppa installation and context menu integration --- deploy.sh | 29 ++++++++++++++++++++++++++++- install_grader_context_menu.reg | 8 +++++++- uninstall_grader_context_menu.reg | 4 +++- uv.lock | 21 +++++++++++++++++++++ 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/deploy.sh b/deploy.sh index 1f191ce..ad03273 100644 --- a/deploy.sh +++ b/deploy.sh @@ -10,8 +10,17 @@ 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 @@ -29,6 +38,14 @@ 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 @@ -39,6 +56,15 @@ if [ -n "$SRC" ]; then 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" ;; @@ -47,5 +73,6 @@ esac # Refresh shell command cache and print resolution hash -r || true which grader || true +which croppa || true -echo "grader installed to $HOME/.local/bin" \ No newline at end of file +echo "grader and croppa installed to $HOME/.local/bin" \ No newline at end of file diff --git a/install_grader_context_menu.reg b/install_grader_context_menu.reg index 4d42a9f..adefd9f 100644 --- a/install_grader_context_menu.reg +++ b/install_grader_context_menu.reg @@ -10,4 +10,10 @@ Windows Registry Editor Version 5.00 @="Grade media with grader" [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Grade media with grader\command] -@="C:\\Users\\administrator\\.local\\bin\\grader.exe \"%V\"" \ No newline at end of file +@="C:\\Users\\administrator\\.local\\bin\\grader.exe \"%V\"" + +[HKEY_CURRENT_USER\Software\Classes\*\shell\Edit with croppa] +@="Edit with croppa" + +[HKEY_CURRENT_USER\Software\Classes\*\shell\Edit with croppa\command] +@="C:\\Users\\administrator\\.local\\bin\\croppa.exe \"%1\"" \ No newline at end of file diff --git a/uninstall_grader_context_menu.reg b/uninstall_grader_context_menu.reg index d861d6b..a58d5fb 100644 --- a/uninstall_grader_context_menu.reg +++ b/uninstall_grader_context_menu.reg @@ -2,4 +2,6 @@ Windows Registry Editor Version 5.00 [-HKEY_CURRENT_USER\Software\Classes\Directory\shell\Grade media with grader] -[-HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Grade media with grader] \ No newline at end of file +[-HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Grade media with grader] + +[-HKEY_CURRENT_USER\Software\Classes\*\shell\Edit with croppa] \ No newline at end of file diff --git a/uv.lock b/uv.lock index c3fefac..55fdaec 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,27 @@ version = 1 revision = 3 requires-python = ">=3.13" +[manifest] +members = [ + "croppa", + "grader", +] + +[[package]] +name = "croppa" +version = "0.1.0" +source = { virtual = "croppa" } +dependencies = [ + { name = "numpy" }, + { name = "opencv-python" }, +] + +[package.metadata] +requires-dist = [ + { name = "numpy", specifier = ">=1.24.0" }, + { name = "opencv-python", specifier = ">=4.8.0" }, +] + [[package]] name = "grader" version = "0.1.0"