#!/bin/bash
usage() {
echo "Usage: $(basename "$0") [-p/--python <requires-python>] <dependency>" >&2
exit 1
}
while true; do
case "$1" in
-p|--python)
requires_python="$2"
shift 2
;;
-*)
usage
;;
*)
break
;;
esac
done
if [ $# != 1 ]; then
usage
fi
dependency="$1"
shift
lockdir=/tmp/uv-locks
mkdir -p "$lockdir"
dir="$(mktemp -d -p "$lockdir")"
echo "TEMPDIR: $dir" >&2
cd "$dir" || exit 1
if [ -n "$requires_python" ]; then
requires_python_toml="requires-python = '>=$requires_python'"
requires_python_arg="-p $requires_python"
fi
cat > pyproject.toml <<EOF
[project]
name = 'project'
version = '0.1.0'
dependencies = ['$dependency']
$requires_python_toml
EOF
uvdir="$HOME/astral/uv"
(cd "$uvdir" && cargo build -p uv)
"$uvdir/target/debug/uv" lock $requires_python_arg
printf "%s" "$dir/uv.lock" | xcp