Skip to content

Commit

Permalink
ask for confirmation before actually publishing
Browse files Browse the repository at this point in the history
  • Loading branch information
AdeelH committed Sep 14, 2023
1 parent 490a3a6 commit 78cb7bb
Showing 1 changed file with 72 additions and 23 deletions.
95 changes: 72 additions & 23 deletions scripts/pypi_publish
Original file line number Diff line number Diff line change
@@ -1,43 +1,92 @@
#!/bin/bash

# Determine the script's directory (even if it's a symbolic link)
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
SCRIPTS_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SRC_DIR="$( cd -P "$( dirname "$SCRIPTS_DIR" )" && pwd )"
while [ -h "$SOURCE" ]; do SOURCE="$(readlink "$SOURCE")"; done
SCRIPTS_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SRC_DIR="$(cd -P "$(dirname "$SCRIPTS_DIR")" && pwd)"

# List of plugins to publish
plugins=("rastervision_pipeline" "rastervision_aws_batch" "rastervision_aws_s3" "rastervision_core" "rastervision_pytorch_learner" "rastervision_pytorch_backend" "rastervision_gdal_vsi")

# Check if the --test flag is passed
publish_to_test=false
if [[ "$1" == "--test" ]]; then
publish_to_test=true
# Remove the --test flag from the arguments
shift
fi
# Usage documentation
function usage() {
echo "Usage: $(basename "$0") [--test]"
echo ""
echo "Publish Raster Vision plugins and top-level package to PyPI or TestPyPI."
echo ""
echo "Options:"
echo " -y Automatically answer 'yes' to prompts."
echo " --test Publish to TestPyPI instead of PyPI."
}

# Function to publish a plugin
publish_plugin() {
cd "$SRC_DIR/$1"
echo "Publishing $1 ... "
# Function to publish a package to the specified repository
function publish_package() {
if [ "$publish_to_test" = true ]; then
echo "Publishing to TestPyPI ... "
twine upload --repository testpypi dist/*
else
echo "Publishing to PyPI ... "
twine upload dist/*
fi
echo "Done."
}

# publish a plugin
function publish_plugin() {
local plugin_name="$1"
cd "$SRC_DIR/$plugin_name"
echo "Publishing $plugin_name ... "
publish_package
cd "$SRC_DIR"
}

# Publish each plugin
for plugin in "${plugins[@]}"; do
publish_plugin "$plugin"
done
# publish all plugins and the top-level package
function publish_all() {
# Publish each plugin
for plugin in "${plugins[@]}"; do
publish_plugin "$plugin"
done

# Publish the top-level package
echo "Publishing rastervision ... "
publish_package
}

# Check for command-line arguments
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
usage
exit
fi

# Publish the top-level package
echo "Publishing rastervision ... "
# Check if the --test flag is passed
publish_to_test=false
if [[ "$1" == "--test" ]]; then
publish_to_test=true
# Remove the --test flag from the arguments
shift
fi

# If testing: publish and exit
if [ "$publish_to_test" = true ]; then
twine upload --repository testpypi dist/*
publish_all
exit
fi

# If actually publishing: prompt for confirmation
if [[ "$1" == "-y" ]]; then
response="y"
else
twine upload dist/*
read -r -p "Actually publish to PyPi? (y/N): " response
fi
echo "Done."

case "$response" in
[yY][eE][sS]|[yY])
echo "Publishing to PyPi..."
publish_all
;;
*)
echo "Aborting."
;;
esac

0 comments on commit 78cb7bb

Please sign in to comment.