|
@@ -0,0 +1,82 @@
|
|
|
|
+#!/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
|