31 lines
813 B
Bash
31 lines
813 B
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SITE_PACKAGES="${1:?usage: extract_wheels.sh <site-packages-dir> <wheels-dir>}"
|
|
WHEELS_DIR="${2:?usage: extract_wheels.sh <site-packages-dir> <wheels-dir>}"
|
|
|
|
mkdir -p "$SITE_PACKAGES"
|
|
|
|
for f in "$WHEELS_DIR"/*; do
|
|
case "$f" in
|
|
*.whl)
|
|
python3 -m zipfile -e "$f" "$SITE_PACKAGES/"
|
|
;;
|
|
*.tar.gz|*.tar.bz2)
|
|
tmpdir=$(mktemp -d)
|
|
tar xf "$f" -C "$tmpdir"
|
|
for pkgdir in "$tmpdir"/*/; do
|
|
for inner in "$pkgdir"*/; do
|
|
if [ -f "${inner}__init__.py" ]; then
|
|
cp -r "$inner" "$SITE_PACKAGES/"
|
|
fi
|
|
done
|
|
find "$pkgdir" -maxdepth 1 -name "*.py" -exec cp {} "$SITE_PACKAGES/" \;
|
|
done
|
|
rm -rf "$tmpdir"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "Extraction done. Contents of $SITE_PACKAGES:"
|
|
ls "$SITE_PACKAGES" |