function poup 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 set toml_state (git status --porcelain pyproject.toml | head -c 2) end if test "$toml_state" = "M " -o "$toml_state" = MM -o "$toml_state" = " M" 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) if test "$toml_state" = UU git checkout --ours poetry.lock git add poetry.lock end end