#!/bin/bash print_help() { echo -e echo -e "For DOWNLOAD" echo -e "$0 " echo -e echo -e "For UPLOAD" echo -e "$0 " echo -e "Like this:" echo -e "/service/rest/v1/components?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' > 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 urls.txt } 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 elif [[ $# -eq 2 ]]; then upload_packages $@ remove_all_packages else print_help fi } main $@