blob: 8c3341bc9e1b7f9448899098db81a8259eb7696f [file] [log] [blame]
#!/usr/bin/env bash
#-------------------------------------------------------------
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#-------------------------------------------------------------
################################################################################
## File: pypi-upload.sh
## Desc: Upload python artifacts to pypi.org
################################################################################
SELF=$(cd $(dirname $0) && pwd)
dry_run_flag=0
while getopts ":n" opt; do
case $opt in
n) dry_run_flag=1 ;;
\?) error "Invalid option: $OPTARG" ;;
esac
done
RELEASE_VERSION=
RELEASE_TAG=
read -p "RELEASE_VERSION : " RELEASE_VERSION
read -p "RELEASE_TAG : " RELEASE_TAG
BASE_DIR=$PWD # SystemDS top level folder
git checkout $RELEASE_TAG
printf "\n Checkout $RELEASE_TAG for building artifacts \n"
mvn clean package -P distribution
cd $BASE_DIR/src/main/python
# Steps:
# 1. update systemds/project_info.py with the new version
printf "\n ======== "
printf "\nA release candidate (RC) after successful voting will be called Approved release version\n"
printf "Is this RC voted and approved by PMC? [Yes/No]: \n"
# case and select
# Docs: https://www.gnu.org/software/bash/manual/bash.html#index-case
select yn in "Yes" "No"; do
case $yn in
Yes ) sed -i "s/$RELEASE_VERSION-dev/$RELEASE_VERSION/" systemds/project_info.py; break ;;
No ) sed -i "s/$RELEASE_VERSION-dev/$RELEASE_TAG/" systemds/project_info.py; break ;;
* ) echo "Yes or No response is required.";;
esac
done
# 2. generate distribution archives
python3 create_python_dist.py
# 2a. check generated distribution files
python3 -m twine check dist/*
# 3. upload the distribution archives to testpypi/pypi
# - For testing follow https://packaging.python.org/tutorials/packaging-projects/
# - Note: for testing use command prompt in windows and
# use Edit->paste to paste the API token (https://pypi.org/help/#invalid-auth)
# else, use `right click` for paste in the terminal.
if [[ $dry_run_flag != 1 ]]; then
python -m twine upload dist/*
else
# Development test:
# Test upload to test.pypi.org
# Credentials are
# username: __token__
# password: pypi-DU5y...
python -m twine upload --repository testpypi dist/*
fi
cd $BASE_DIR
exit