From 808ef03273b14112d9eab2c98febceaa1969951e Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Mon, 8 Sep 2025 19:57:06 +0200 Subject: [PATCH] Make poup work with uv --- functions/poup.fish | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/functions/poup.fish b/functions/poup.fish index 16cef21..00d8746 100644 --- a/functions/poup.fish +++ b/functions/poup.fish @@ -1,6 +1,21 @@ function poup - set toml_state (git status --porcelain pyproject.toml | head -c 2) + set -l toml_state (git status --porcelain pyproject.toml | head -c 2) + set -l project_type unknown + set -l lockfile unknown + if test -e poetry.lock + set project_type poetry + set lockfile poetry.lock + else if test -e uv.lock + set project_type uv + set lockfile uv.lock + else + echo "Unknown project type (neither poetry.lock nor uv.lock exists)" >/dev/stderr + + return 1 + end + + # Make sure pyproject.toml doesn’t have conflicts if test "$toml_state" = UU echo "pyproject.toml has conflicts, resolve those first" git mergetool pyproject.toml; or return @@ -8,9 +23,15 @@ function poup end if test "$toml_state" = "M " -o "$toml_state" = MM -o "$toml_state" = " M" - git checkout --ours poetry.lock - poetry lock --no-update - and git add poetry.lock + git checkout --ours $lockfile + + if test $project_type = poetry + poetry lock --no-update + else if test $project_type = uv + uv lock + end + + and git add $lockfile end set toml_state (git status --porcelain poetry.lock | head -c 2)