92 lines
1.8 KiB
Bash
Executable File
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 $@
|