5 # Ask a yes or no question
7 local prompt default reply
8 if [ "${2:-}" = "Y" ]; then
11 elif [ "${2:-}" = "N" ]; then
19 echo -ne "$1 [$prompt] "
20 read -n 1 -t 5 reply </dev/tty
21 if [ -z "$reply" ]; then
23 echo "(timeout, assuming $default)"
27 [Yy]* ) echo && return 0 ;;
28 [Nn]* ) echo && return 1 ;;
29 * ) echo && echo "Please answer Yes or No." ;;
35 read -rsp $'Press any key to continue...' -n1 key
40 echo "Usage: $0 <required_version_number>"
45 PREVIOUS_VERSION=$(git tag --sort=-creatordate | head -1)
46 git tag --format='%(creatordate:short)%09%(refname:strip=2)'
48 echo "PREVIOUS_VERSION=${PREVIOUS_VERSION}"
50 if ! ask_y_n "About to cut (build, test, package, give you the command to upload) $VERSION, ok?" "N"; then
51 echo "Ok, exiting instead."
54 LAST_TAG=$(git tag | tail -1)
55 if [ "${LAST_TAG}" == "${VERSION}" ]; then
56 echo "Last tag is the same as ${VERSION}?! Aborted."
61 echo "Ok, here are the commit message of changes since the last version..."
62 git log $LAST_TAG..HEAD
67 echo "Ok, running pyutils and scottutilz tests including test_some_dependencies.py..."
68 cd ../scottutilz/tests
69 ./run_tests.py --all --coverage
75 echo "Creating a git tag for version ${VERSION}"
76 git tag -a "${VERSION}" -m "cut_version.sh ${VERSION}"
77 CHANGES=$(git log --pretty="- %s" $VERSION...$LAST_TAG)
78 printf "# 🎁 Release notes (\`$VERSION\`)\n\n## Changes\n$CHANGES\n\n## Metadata\n\`\`\`\nThis version -------- $VERSION\nPrevious version ---- $PREVIOUS_VERSION\nTotal commits ------- $(echo "$CHANGES" | wc -l)\n\`\`\`\n" >> release_notes.md
80 echo "Updating pyproject.toml with this version number"
81 cat ./pyproject.template | sed s/##VERSION##/$VERSION/g > ./pyproject.toml
83 echo "Building wheel..."
86 echo "Checking in wheel package under dist/"
88 WHEEL=pyutils-${VERSION}-py3-none-any.whl
89 if [ ! -f ${WHEEL} ]; then
90 echo "Can't find ${WHEEL}?!"
93 LINK=pyutils-latest-py3-none-any.whl
95 ln -s ${WHEEL} ${LINK}
99 md5 ${FILE} > ${FILE}.md5
103 git commit -a -m "Cut version ${VERSION}" -m "${CHANGES}"
105 echo "Pushing changes to git"
108 echo "Done. To upload, run: \"twine upload --verbose --repository pypi dist/pyutils-${VERSION}*.whl\""