#!/bin/bash ############################################## # CoolProp release management ############################################## # # Things to remember when you make a new release: # # * Force a new build on all buildbots from the release branch # * Run the script and check the logs # * Make a tag in your git software # * Update the default download on sourceforge to point to the new sources # # In case you experience problems with permissions, login to # sourceforge by creating a new shell with # ssh -t username,coolprop@shell.sf.net create # and the run # find . -type d ! -perm 0775 -exec chmod 0775 {} \; # find . -type f ! -perm 0664 -exec chmod 0664 {} \; # in /home/project-web/coolprop/htdocs and /home/frs/project/coolprop/ # to reset all permissions. # # # Make sure that only two arguments are passed to this script - the version that # will be released and the dryrun vs. release option. if [ $# != 2 ]; then echo "Only two arguments should be passed to this script: " echo "The version that will be released and if you would like a dry run or a release." echo "for example: \"release.bsh 5.0.0 dryrun\" or \"release.bsh nightly release\" " exit 1 fi # # Just a small function print messages SEPARATOR="----------------------------------" function printMessage { echo " " echo $SEPARATOR echo "$1" return 0 } # Now we use the function defined above printMessage "Processing the input variables: " # # Process the version number and set parameters accordingly CPVERSION="$1" if [[ $CPVERSION == +([0-9]).+([0-9]).+([0-9]) ]]; then echo "CPVERSION = $CPVERSION" BINFOLDER="release" elif [ "$CPVERSION" == "nightly" ]; then echo "CPVERSION = $CPVERSION - which is a valid input" BINFOLDER="binaries" else echo "CPVERSION = $CPVERSION - not valid!" exit 1 fi # # SFUSER="jorritw" # ibell or jorritw BASEDIR="$HOME/buildbot/server-master/public_html" REPODIR="$HOME/src/CoolPropFull.git" TMPSDIR="$HOME/src/CoolProp.sources" SRCFOLDER="$BASEDIR/$BINFOLDER/source" DOCFOLDER="$BASEDIR/$BINFOLDER/sphinx" DOC4FILES="4.2.5/coolpropv425docs.zip" DOC4FOLDER="$DOCFOLDER/v4" # # if [ "$2" == "release" ]; then DRYRUN=false else DRYRUN=true fi echo "DRYRUN = $DRYRUN" # # pushd ${BASEDIR} # Change the folder if [ "$DRYRUN" != "false" ]; then printMessage "Dry run detected" echo "Dry run; no zipping of the sources" echo "Dry run; no zipping of the docs" echo "Dry run; skipping python upload" echo "Dry run; skipping folder date" RSYNC_DRY_RUN=--dry-run else printMessage "Updating sources" pushd "$REPODIR" git pull git submodule update #python dev/scripts/git-archive-all $SRCFOLDER/CoolProp_sources.zip popd printMessage "Generating headers" rsync -a --delete "$REPODIR/" "$TMPSDIR" pushd "$TMPSDIR" git reset --hard HEAD python "dev/generate_headers.py" #rm -rf .git* find . -iwholename "*/.git*" -exec rm -rf {} \; cd .. mkdir -p $SRCFOLDER rm -f $SRCFOLDER/CoolProp_sources.zip zip -rq $SRCFOLDER/CoolProp_sources.zip $(basename $TMPSDIR) cd $(basename $TMPSDIR) popd rm -f "$BINFOLDER/README.rst.txt" if [ "$CPVERSION" == "nightly" ]; then RSYNC_OPTS="-a --no-perms -z --stats --delete" rm -rf "$BINFOLDER/docs" CPVERSION="$CPVERSION"/ #$(date +%F) echo "CoolProp nightly binaries" > "$BINFOLDER/README.rst.txt" echo "-------------------------" >> "$BINFOLDER/README.rst.txt" echo -n "Development binaries of the" >> "$BINFOLDER/README.rst.txt" echo -n " \`CoolProp project \`_ " >> "$BINFOLDER/README.rst.txt" echo "updated on $(date +%F) at $(date +%X) $(date +%Z)." >> "$BINFOLDER/README.rst.txt" else RSYNC_OPTS="-a --no-perms -z --stats" printMessage "Zipping up the docs and moving them into the $BINFOLDER folder for staging" rm -f documentation.zip zip -rq documentation.zip $DOCFOLDER/* -x */$(basename $DOC4FOLDER)/* cp documentation.zip "$DOCFOLDER/sphinx" echo "Uploading the python binaries to pypi" twine upload $BINFOLDER/Python/*.whl $BINFOLDER/Python/*.tar.gz fi RSYNC_DRY_RUN= fi # printMessage "Getting the latest v4 docs from SourceForge" rsync $RSYNC_DRY_RUN $RSYNC_OPTS "frs.sf.net-$SFUSER:/home/frs/project/coolprop/CoolProp/$DOC4FILES" "$(basename $DOC4FILES)" mkdir -p "$DOC4FOLDER" unzip -qo "$(basename $DOC4FILES)" -d "$DOC4FOLDER" # printMessage "Copying the binaries to SourceForge" rsync $RSYNC_DRY_RUN $RSYNC_OPTS "$BINFOLDER/" frs.sf.net-$SFUSER:/home/frs/project/coolprop/CoolProp/$CPVERSION if [ ${CPVERSION:0:7} != "nightly" ]; then printMessage "Publishing the docs on SourceForge" rsync $RSYNC_DRY_RUN $RSYNC_OPTS "$DOCFOLDER/" frs.sf.net-$SFUSER:/home/project-web/coolprop/htdocs fi # if [[ ("$BINFOLDER" == "release") && ("$DRYRUN" == "false") ]]; then printMessage "Removing release directory" rm -rf "$BINFOLDER" mkdir -p "$BINFOLDER" fi # Change back to where we came from popd printMessage "All done, goodbye." exit 0