Files
pip-install/pip-install.sh

92 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
print_help() {
echo -e
echo -e "For DOWNLOAD"
echo -e "$0 <package>"
echo -e
echo -e "For UPLOAD"
echo -e "$0 <nexus_host> <repository>"
echo -e "Like this:"
echo -e "<nexus_host>/service/rest/v1/components?repository=<repository>"
echo -e
}
search_package() {
local package=$1
curl https://pypi.org/project/$package/\#files -s | grep -Eo https://files\.+\.+whl | grep -Ev 'macos|arch|arm|cp27' > urls.txt
}
download_package() {
wget -nc -i urls.txt
}
# insert nexus_host, repository and package to upload
upload_package() {
local nexus_host=$1
local repository=$2
local package=$3
curl -X POST "$nexus_host/service/rest/v1/components?repository=$repository" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "pypi.asset=@$package" -i
}
upload_packages() {
local packages=$(ls *.whl *.tar.gz)
for package in $packages; do
upload_package $@ $package
rm $package
done
}
remove_all_packages() {
rm *.whl *.tar.gz
}
init_venv() {
python3.9 -m venv venv
source venv/bin/activate
pip install freeze
}
install_requriments() {
pip install -r $1
}
create_new_requriments() {
pip freeze > .requirments.txt
grep -Eo '^\w[^==]+' .requirments.txt > .new_requirments.txt
rm .requirments.txt
}
remove_venv() {
rm -r venv/
}
main() {
if [[ $# -eq 1 ]]; then
init_venv
install_requriments $@
create_new_requriments
remove_venv
cat .new_requirments.txt | while read line; do
search_package $line
download_package
done
rm .new_requirments.txt urls.txt
elif [[ $# -eq 2 ]]; then
upload_packages $@
remove_all_packages
else
print_help
fi
}
main $@