srmp/py.pypi.sh
2024-09-30 08:11:29 +02:00

104 lines
2 KiB
Bash
Executable file

#! /usr/bin/env sh
set \
"pip" \
"setuptools" \
"wheel" \
\
"uv" \
\
"Cython" \
\
"pelican" \
\
"hatch" \
\
"Sphinx" \
"sphinx-rtd-theme" \
\
"gitlint" \
\
"pydoclint" \
"pylint" \
"ruff" \
\
"pytest" \
\
"toml" \
\
"twine" \
\
"mypy" \
"pyright" \
\
"ruamel.yaml" \
"PyYAML" \
"types-PyYAML"
file="$(readlink --canonicalize-existing "${0}")"
root="$(dirname "${file}")"
root="${root}/root/py/pypi"
tmp="${root}/tmp"
rm --force --recursive "${root}"
for version in "os" "3.12" "3.11" "3.10" "pypy3.10"; do
export VIRTUAL_ENV="/prj/venv/${version}"
export OLD_PATH="${PATH}"
export PATH="${VIRTUAL_ENV}/bin:${PATH}"
sub="${root}/${version}"
python3 -m pip \
download \
--dest "${sub}" \
"${@}"
prefix="Name: "
for wheel in "${sub}/"*; do
rm --force --recursive "${tmp}"
mkdir --parents "${tmp}"
echo
echo "${wheel}"
file="$(basename "${wheel}")"
case "${file}" in
*.tar.gz)
short="${file%.*}"
short="${short%.*}"
;;
*.whl)
short="${file%.*}"
;;
esac
file_name="$(echo "${short}" | cut -d "-" -f 1)"
file_version="$(echo "${short}" | cut -d "-" -f 2)"
case "${file}" in
*.tar.gz)
meta_data="${file_name}-${file_version}/${file_name}.egg-info/PKG-INFO"
if ! tar xf "${wheel}" -C "${tmp}" "${meta_data}"; then
meta_data="${file_name}-${file_version}/PKG-INFO"
tar xf "${wheel}" -C "${tmp}" "${meta_data}" || exit
fi
;;
*.whl)
meta_data="${file_name}-${file_version}.dist-info/METADATA"
unzip "${wheel}" "${meta_data}" -d "${tmp}" || exit
;;
esac
name="$(grep "${prefix}" "${tmp}/${meta_data}" | sed "s|${prefix}||")"
echo "${name}"
name="$(echo "${name}" | tr "[:upper:]" "[:lower:]")"
name="$(echo "${name}" | tr "." "-")"
name="$(echo "${name}" | tr "_" "-")"
name="$(echo "${name}" | tr -d "\r")"
echo "${name}"
simple="${sub}/simple/${name}"
mkdir --parents "${simple}"
mv -i "${sub}/${file_name}-"* "${simple}/"
done
export PATH="${OLD_PATH}"
unset OLD_PATH VIRTUAL_ENV
done
rm --force --recursive "${tmp}"