|
| 1 | +#!/bin/bash -ex |
| 2 | +# SPDX-License-Identifier: MIT |
| 3 | + |
| 4 | +MAIN_BRANCH_NAME="main" |
| 5 | +UPSTERAM_GIT="https://github.com/rust-netlink/netlink-packet-route.git" |
| 6 | +TMP_CHANGELOG_FILE=$(mktemp) |
| 7 | +EDITOR="${EDITOR:-vim}" |
| 8 | + |
| 9 | +if ! command -v jq &> /dev/null |
| 10 | +then |
| 11 | + echo "Please install jq to proceed" |
| 12 | + exit 1 |
| 13 | +fi |
| 14 | + |
| 15 | +if ! command -v cargo set-version &> /dev/null |
| 16 | +then |
| 17 | + echo 'Please install cargo-edit via `cargo install cargo-edit` to proceed' |
| 18 | + exit 1 |
| 19 | +fi |
| 20 | + |
| 21 | + |
| 22 | +CHANGLOG_FORMAT=" |
| 23 | +### Breaking changes\n\ |
| 24 | + - N/A\n\ |
| 25 | +\n\ |
| 26 | +### New features\n\ |
| 27 | + - N/A\n\ |
| 28 | +\n\ |
| 29 | +### Bug fixes" |
| 30 | + |
| 31 | +function cleanup { |
| 32 | + rm -f $TMP_CHANGELOG_FILE |
| 33 | +} |
| 34 | + |
| 35 | +trap cleanup ERR EXIT |
| 36 | + |
| 37 | +CODE_BASE_DIR=$(readlink -f "$(dirname -- "$0")/.."); |
| 38 | + |
| 39 | +cd $CODE_BASE_DIR; |
| 40 | + |
| 41 | +CUR_VERSION=$(cargo metadata --no-deps --format-version 1 | \ |
| 42 | + jq '.packages[0].version' --raw-output) |
| 43 | +CUR_MAJOR_VERSION=$(echo $CUR_VERSION|cut -f1 -d.) |
| 44 | +CUR_MINOR_VERSION=$(echo $CUR_VERSION|cut -f2 -d.) |
| 45 | +CUR_MICRO_VERSION=$(echo $CUR_VERSION|cut -f3 -d.) |
| 46 | + |
| 47 | +# TODO: Be smart on bumping major, micro or minor version by checking API |
| 48 | +# stability |
| 49 | +NEXT_VERSION="${CUR_MAJOR_VERSION}.$((CUR_MINOR_VERSION + 1)).0"; |
| 50 | + |
| 51 | +git branch new_release || true |
| 52 | +git checkout new_release |
| 53 | +git fetch upstream || (git remote add upstream $UPSTERAM_GIT; \ |
| 54 | + git fetch upstream) |
| 55 | +git reset --hard upstream/$MAIN_BRANCH_NAME |
| 56 | + |
| 57 | +echo "Checking 'cargo publish --dry-run'" |
| 58 | + |
| 59 | +cargo publish --dry-run |
| 60 | + |
| 61 | +echo "# Changelog" > $TMP_CHANGELOG_FILE |
| 62 | +echo "## [$NEXT_VERSION] - $(date +%F)" >> $TMP_CHANGELOG_FILE |
| 63 | +echo -e $CHANGLOG_FORMAT >> $TMP_CHANGELOG_FILE |
| 64 | +git log --oneline --format=" - %s. (%h)" \ |
| 65 | + v${CUR_VERSION}..upstream/$MAIN_BRANCH_NAME -- | \ |
| 66 | + grep -v -E '^ - test:' | \ |
| 67 | + grep -v -E '^ - Bump version' | \ |
| 68 | + grep -v -E 'cargo clippy' >> $TMP_CHANGELOG_FILE |
| 69 | +echo "" >> $TMP_CHANGELOG_FILE |
| 70 | + |
| 71 | +$EDITOR $TMP_CHANGELOG_FILE |
| 72 | +if [ $(wc -l < $TMP_CHANGELOG_FILE) -lt 2 ];then |
| 73 | + echo "No CHANGELOG addition, exiting" |
| 74 | + git checkout CHANGELOG |
| 75 | + exit 1 |
| 76 | +fi |
| 77 | + |
| 78 | +cargo set-version $NEXT_VERSION |
| 79 | + |
| 80 | +CHANGELOG_STR=$(sed -n '3,$p' $TMP_CHANGELOG_FILE|tr '#' '=') |
| 81 | +sed -n '2,$p' CHANGELOG >> $TMP_CHANGELOG_FILE |
| 82 | + |
| 83 | +mv $TMP_CHANGELOG_FILE $CODE_BASE_DIR/CHANGELOG |
| 84 | +git commit --signoff $CODE_BASE_DIR/CHANGELOG -m "New release ${NEXT_VERSION}" \ |
| 85 | + -m "$CHANGELOG_STR" |
| 86 | +git push origin +new_release |
| 87 | +echo "Please visit github to create pull request for this breach" |
0 commit comments