12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/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"
- 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 publishCrates {
- for CRATE in "${crates[@]}"
- do
- if [ "$CRATE" = "librespot" ]
- then
- CRATE=''
- fi
- crate_path="$WORKINGDIR/$CRATE"
- crate_path=${crate_path//\/\///}
- cd $crate_path
- 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"
- 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 run {
- switchBranch
- updateVersion $1
- commitAndTag $1
- publishCrates
- updateRepo $1
- echo "Successfully published v$1 to crates.io and uploaded changes to repo."
- }
- # First argument is new version number.
- run $1
|