123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/bin/bash
- WORKINGDIR="$( cd "$(dirname "$0")" ; pwd -P )"
- cd $WORKINGDIR
- crates=( "protocol" "core" "audio" "metadata" "playback" "connect" "librespot" )
- function switchBranch {
- # You are expected to have committed/stashed your changes before running this.
- echo "Switching to master branch and merging development."
- git checkout master
- git pull
- git merge dev
- }
- function updateVersion {
- for CRATE in "${crates[@]}"
- do
- if [ "$CRATE" = "librespot" ]
- then
- CRATE=''
- fi
- crate_path="$WORKINGDIR/$CRATE/Cargo.toml"
- crate_path=${crate_path//\/\///}
- sed -i '' "s/^version.*/version = \"$1\"/g" "$crate_path"
- echo "Path is $crate_path"
- if [ "$CRATE" = "librespot" ]
- then
- cargo update
- git add . && git commit -a -m "Update Cargo.lock"
- fi
- done
- }
- function commitAndTag {
- git commit -a -m "Update version numbers to $1"
- git tag "v$1" -a -m "Update to version $1"
- }
- function get_crate_name {
- awk -v FS="name = " 'NF>1{print $2; exit}' Cargo.toml
- }
- function remoteWait() {
- IFS=:
- secs=${1}
- crate_name=${2}
- while [ $secs -gt 0 ]
- do
- sleep 1 &
- printf "\rSleeping to allow %s to propagate on crates.io servers. Continuing in %2d second(s)." ${crate_name} ${secs}
- secs=$(( $secs - 1 ))
- wait
- done
- echo
- }
- function publishCrates {
- for CRATE in "${crates[@]}"
- do
- if [ "$CRATE" = "librespot" ]
- then
- CRATE=''
- fi
- crate_path="$WORKINGDIR/$CRATE"
- crate_path=${crate_path//\/\///}
- cd $crate_path
- # Also need to update Cargo.lock in root directory
- crate_name=`echo $( awk -v FS="name = " 'NF>1{print $2; exit}' Cargo.toml )`
- echo "Publishing $crate_name to crates.io"
- if [ "$CRATE" == "protocol" ]
- then
- # Protocol crate needs --no-verify option due to build.rs modification.
- cargo publish --no-verify
- else
- cargo publish
- fi
- echo "Successfully published $crate_name to crates.io"
- remoteWait 30 $crate_name
- done
- }
- function updateRepo {
- cd $WORKINGDIR
- echo "Pushing to master branch of repo."
- git push origin master
- echo "Pushing v$1 tag to master branch of repo."
- git push origin v$1
- }
- function rebaseDev {
- git checkout dev
- git merge master
- git push
- }
- function run {
- switchBranch
- updateVersion $1
- commitAndTag $1
- publishCrates
- updateRepo $1
- rebaseDev
- echo "Successfully published v$1 to crates.io and uploaded changes to repo."
- }
- # First argument is new version number.
- run $1
|