44 lines
1.2 KiB
Fish
44 lines
1.2 KiB
Fish
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
|