| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  | #!/bin/sh | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 2011-2013 Nico Schottelius (nico-cdist at schottelius.org) | 
					
						
							|  |  |  | # 2016 Darko Poljak (darko.poljak at gmail.com) | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This file is part of cdist. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # cdist is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | # it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  | # the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | # (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # cdist is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | # GNU General Public License for more details. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | # along with cdist. If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This file contains the heavy lifting found usually in the Makefile | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # vars for make | 
					
						
							|  |  |  | helper=$0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | basedir=${0%/*}/../ | 
					
						
							|  |  |  | # run_as is used to check how the script is called (by $0 value) | 
					
						
							|  |  |  | # currently supported sufixes for $0 are: | 
					
						
							|  |  |  | # .freebsd - run as freebsd | 
					
						
							|  |  |  | basename=${0##*/} | 
					
						
							|  |  |  | run_as=${basename#*.} | 
					
						
							|  |  |  | case "$run_as" in | 
					
						
							|  |  |  |     freebsd) | 
					
						
							|  |  |  |         to_a=cdist-configuration-management | 
					
						
							|  |  |  |         to_d=googlegroups.com | 
					
						
							|  |  |  |         from_a=darko.poljak | 
					
						
							|  |  |  |         from_d=gmail.com | 
					
						
							|  |  |  |         ml_name="Darko Poljak" | 
					
						
							|  |  |  |         ml_sig_name="Darko" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # vars for make | 
					
						
							|  |  |  |         WEBDIR=../vcs/www.nico.schottelius.org | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     *) | 
					
						
							|  |  |  |         to_a=cdist | 
					
						
							|  |  |  |         to_d=l.schottelius.org | 
					
						
							|  |  |  |         from_a=nico-cdist | 
					
						
							|  |  |  |         from_d=schottelius.org | 
					
						
							|  |  |  |         ml_name="Nico -telmich- Schottelius" | 
					
						
							|  |  |  |         ml_sig_name="Nico" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # vars for make | 
					
						
							|  |  |  |         WEBDIR=$$HOME/vcs/www.nico.schottelius.org | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Change to checkout directory | 
					
						
							|  |  |  | cd "$basedir" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | version=$(git describe) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | option=$1; shift | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | case "$option" in | 
					
						
							|  |  |  |     print-make-vars) | 
					
						
							|  |  |  |         printf "helper: ${helper}\n" | 
					
						
							|  |  |  |         printf "WEBDIR: ${WEBDIR}\n" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     print-runas) | 
					
						
							|  |  |  |         printf "run_as: $run_as\n" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     changelog-changes) | 
					
						
							|  |  |  |         if [ "$#" -eq 1 ]; then | 
					
						
							|  |  |  |             start=$1 | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             start="[[:digit:]]" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         end="[[:digit:]]" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         awk -F: "BEGIN { start=0 } | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 if(start == 0) { | 
					
						
							|  |  |  |                     if (\$0 ~ /^$start/) { | 
					
						
							|  |  |  |                         start = 1 | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     if (\$0 ~ /^$end/) { | 
					
						
							|  |  |  |                         exit | 
					
						
							|  |  |  |                     } else { | 
					
						
							|  |  |  |                         print \$0  | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             }" "$basedir/docs/changelog" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     changelog-version) | 
					
						
							|  |  |  |         # get version from changelog | 
					
						
							|  |  |  |         grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//' | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     check-date) | 
					
						
							|  |  |  |         # verify date in changelog is today | 
					
						
							|  |  |  |         date_today="$(date +%Y-%m-%d)" | 
					
						
							|  |  |  |         date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if [ "$date_today" != "$date_changelog" ]; then | 
					
						
							|  |  |  |             echo "Date in changelog is not today" | 
					
						
							|  |  |  |             echo "Changelog: $date_changelog" | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     check-unittest) | 
					
						
							|  |  |  |         "$0" test | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     blog) | 
					
						
							|  |  |  |         version=$1; shift | 
					
						
							|  |  |  |         blogfile=$1; shift | 
					
						
							|  |  |  |         dir=${blogfile%/*} | 
					
						
							|  |  |  |         file=${blogfile##*/} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cat << eof > "$blogfile" | 
					
						
							|  |  |  | [[!meta title="Cdist $version released"]] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Here's a short overview about the changes found in version ${version}: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $0 changelog-changes "$version" >> "$blogfile" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cat << eof >> "$blogfile" | 
					
						
							|  |  |  | For more information visit the [[cdist homepage|software/cdist]]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [[!tag cdist config unix]] | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  |         cd "$dir" | 
					
						
							|  |  |  |         git add "$file" | 
					
						
							|  |  |  |         # Allow git commit to fail if there are no changes | 
					
						
							|  |  |  |         git commit -m "cdist blog update: $version" "$blogfile" || true | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ml-release) | 
					
						
							|  |  |  |         if [ $# -ne 1 ]; then | 
					
						
							|  |  |  |             echo "$0 ml-release version" >&2 | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         version=$1; shift | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         to=${to_a}@${to_d} | 
					
						
							|  |  |  |         from=${from_a}@${from_d} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         (  | 
					
						
							|  |  |  |         cat << eof | 
					
						
							|  |  |  | From: ${ml_name} <$from> | 
					
						
							|  |  |  | To: cdist mailing list <$to> | 
					
						
							|  |  |  | Subject: cdist $version released | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Hello .*, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cdist $version has been released with the following changes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         "$0" changelog-changes "$version" | 
					
						
							|  |  |  |         cat << eof | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cheers, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ${ml_sig_name} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | --  | 
					
						
							|  |  |  | Automatisation at its best level. With cdist. | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  |         ) | /usr/sbin/sendmail -f "$from" "$to" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     release-git-tag) | 
					
						
							|  |  |  |         target_version=$($0 changelog-version) | 
					
						
							|  |  |  |         if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then | 
					
						
							|  |  |  |             echo "Tag for $target_version exists, aborting" | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |         printf "Enter tag description for ${target_version}: " | 
					
						
							|  |  |  |         read tagmessage | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # setup for signed tags: | 
					
						
							|  |  |  |         # gpg --fulL-gen-key | 
					
						
							|  |  |  |         # gpg --list-secret-keys --keyid-format LONG | 
					
						
							|  |  |  |         # git config --local user.signingkey <id> | 
					
						
							|  |  |  |         # for exporting pub key: | 
					
						
							|  |  |  |         #     gpg --armor --export <id> > pubkey.asc | 
					
						
							|  |  |  |         #     gpg --output pubkey.gpg --export <id> | 
					
						
							|  |  |  |         # show tag with signature | 
					
						
							|  |  |  |         # git show <tag> | 
					
						
							|  |  |  |         # verify tag signature | 
					
						
							|  |  |  |         # git tag -v <tag> | 
					
						
							|  |  |  |         # | 
					
						
							|  |  |  |         # gpg verify signature | 
					
						
							|  |  |  |         # gpg --verify <asc-file> <file> | 
					
						
							|  |  |  |         # gpg --no-default-keyring --keyring <pubkey.gpg> --verify <asc-file> <file> | 
					
						
							| 
									
										
										
										
											2016-07-15 22:15:46 +02:00
										 |  |  |         # Ensure gpg-agent is running. | 
					
						
							| 
									
										
										
										
											2016-07-15 22:21:07 +02:00
										 |  |  |         export GPG_TTY=$(tty) | 
					
						
							| 
									
										
										
										
											2016-07-15 22:15:46 +02:00
										 |  |  |         gpg-agent | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         git tag -s "$target_version" -m "$tagmessage" | 
					
						
							|  |  |  |         git push --tags | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-11 12:28:22 +02:00
										 |  |  |     sign-git-release) | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |         if [ $# -lt 2 ] | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |         then | 
					
						
							| 
									
										
										
										
											2016-07-11 12:28:22 +02:00
										 |  |  |             printf "usage: $0 sign-git-release TAG TOKEN [ARCHIVE]\n" | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |             printf "    if ARCHIVE is not specified then it is created\n" | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |         tag="$1" | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |         if ! git rev-parse -q --verify "${tag}" >/dev/null 2>&1 | 
					
						
							| 
									
										
										
										
											2016-07-10 21:44:57 +02:00
										 |  |  |         then | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |             printf "Tag \"${tag}\" not found.\n" | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |         token="$2" | 
					
						
							| 
									
										
										
										
											2016-07-15 22:33:33 +02:00
										 |  |  |         if [ $# -gt 2 ] | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |         then | 
					
						
							|  |  |  |             archivename="$3" | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             archivename="cdist-${tag}.tar.gz" | 
					
						
							| 
									
										
										
										
											2016-07-18 19:48:54 +02:00
										 |  |  |             git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \ | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |                 || exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |         gpg --armor --detach-sign "${archivename}" || exit 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # make github release | 
					
						
							|  |  |  |         curl -H "Authorization: token ${token}" \ | 
					
						
							|  |  |  |             --request POST \ | 
					
						
							|  |  |  |             --data "{ \"tag_name\":\"${tag}\", \ | 
					
						
							|  |  |  |                       \"target_commitish\":\"master\", \ | 
					
						
							|  |  |  |                       \"name\": \"${tag}\", \ | 
					
						
							|  |  |  |                       \"body\":\"${tag}\", \ | 
					
						
							|  |  |  |                       \"draft\":false, \ | 
					
						
							|  |  |  |                       \"prerelease\": false}" \ | 
					
						
							|  |  |  |             "https://api.github.com/repos/ungleich/cdist/releases" || exit 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # get release ID | 
					
						
							|  |  |  |         repoid=$(curl "https://api.github.com/repos/ungleich/cdist/releases/tags/${tag}" \ | 
					
						
							| 
									
										
										
										
											2016-07-15 22:50:26 +02:00
										 |  |  |             | python3 -c 'import json; import sys; print(json.loads(sys.stdin.read())["id"])') \ | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |             || exit 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-18 19:58:21 +02:00
										 |  |  |         # upload archive and then signature | 
					
						
							|  |  |  |         curl -H "Authorization: token ${token}" \ | 
					
						
							|  |  |  |              -H "Accept: application/vnd.github.manifold-preview" \ | 
					
						
							|  |  |  |              -H "Content-Type: application/x-gtar" \ | 
					
						
							|  |  |  |              --data-binary @${archivename} \ | 
					
						
							|  |  |  |             "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}" \ | 
					
						
							|  |  |  |             || exit 1 | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |         curl -H "Authorization: token ${token}" \ | 
					
						
							|  |  |  |              -H "Accept: application/vnd.github.manifold-preview" \ | 
					
						
							|  |  |  |              -H "Content-Type: application/pgp-signature" \ | 
					
						
							|  |  |  |              --data-binary @${archivename}.asc \ | 
					
						
							|  |  |  |             "https://uploads.github.com/repos/ungleich/cdist/releases/${repoid}/assets?name=${archivename}.asc" \ | 
					
						
							|  |  |  |             || exit 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # remove generated files (archive and asc) | 
					
						
							| 
									
										
										
										
											2016-07-16 00:07:13 +02:00
										 |  |  |         if [ $# -eq 2] | 
					
						
							| 
									
										
										
										
											2016-07-11 08:19:10 +02:00
										 |  |  |         then | 
					
						
							|  |  |  |             rm -f "${archivename}" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |         rm -f "${archivename}.asc" | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     release) | 
					
						
							|  |  |  |         set -e | 
					
						
							|  |  |  |         target_version=$($0 changelog-version) | 
					
						
							|  |  |  |         target_branch=$($0 version-branch) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         echo "Beginning release process for $target_version" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # First check everything is sane | 
					
						
							|  |  |  |         "$0" check-date | 
					
						
							|  |  |  |         "$0" check-unittest | 
					
						
							| 
									
										
										
										
											2016-07-10 11:21:52 +02:00
										 |  |  |         "$0" pep8 | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Generate version file to be included in packaging | 
					
						
							| 
									
										
										
										
											2016-07-16 01:38:22 +02:00
										 |  |  |         "$0" target-version | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Ensure the git status is clean, else abort | 
					
						
							|  |  |  |         if ! git diff-index --name-only --exit-code HEAD ; then | 
					
						
							|  |  |  |             echo "Unclean tree, see files above, aborting" | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Ensure we are on the master branch | 
					
						
							|  |  |  |         masterbranch=yes | 
					
						
							|  |  |  |         if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then | 
					
						
							|  |  |  |             echo "Releases are happening from the master branch, aborting" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo "Enter the magic word to release anyway" | 
					
						
							|  |  |  |             read magicword | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if [ "$magicword" = "iknowwhatido" ]; then | 
					
						
							|  |  |  |                 masterbranch=no | 
					
						
							|  |  |  |             else | 
					
						
							|  |  |  |                 exit 1 | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if [ "$masterbranch" = yes ]; then | 
					
						
							|  |  |  |             # Ensure version branch exists | 
					
						
							|  |  |  |             if ! git rev-parse --verify refs/heads/$target_branch 2>/dev/null; then | 
					
						
							|  |  |  |                 git branch "$target_branch" | 
					
						
							|  |  |  |             fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Merge master branch into version branch | 
					
						
							|  |  |  |             git checkout "$target_branch" | 
					
						
							|  |  |  |             git merge master | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Verify that after the merge everything works | 
					
						
							|  |  |  |         "$0" check-date | 
					
						
							|  |  |  |         "$0" check-unittest | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-30 15:05:26 +02:00
										 |  |  |         # Generate documentation (man and html) | 
					
						
							| 
									
										
										
										
											2016-07-16 00:50:01 +02:00
										 |  |  |         # First, clean old generated docs | 
					
						
							|  |  |  |         make helper=${helper} WEBDIR=${WEBDIR} docs-clean | 
					
						
							| 
									
										
										
										
											2016-06-30 15:05:26 +02:00
										 |  |  |         make helper=${helper} WEBDIR=${WEBDIR} docs | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Generate speeches (indirect check if they build) | 
					
						
							|  |  |  |         make helper=${helper} WEBDIR=${WEBDIR} speeches | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #############################################################  | 
					
						
							|  |  |  |         # Everything green, let's do the release | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Tag the current commit | 
					
						
							|  |  |  |         "$0" release-git-tag | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  |         # sign git tag | 
					
						
							|  |  |  |         printf "Enter github authentication token: " | 
					
						
							|  |  |  |         read token | 
					
						
							| 
									
										
										
										
											2016-07-11 12:28:22 +02:00
										 |  |  |         "$0" sign-git-release "${target_version}" "${token}" | 
					
						
							| 
									
										
										
										
											2016-07-10 21:17:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  |         # Also merge back the version branch | 
					
						
							|  |  |  |         if [ "$masterbranch" = yes ]; then | 
					
						
							|  |  |  |             git checkout master | 
					
						
							|  |  |  |             git merge "$target_branch" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Publish git changes | 
					
						
							| 
									
										
										
										
											2016-07-07 07:53:21 +02:00
										 |  |  |         case "$run_as" in | 
					
						
							|  |  |  |             freebsd) | 
					
						
							|  |  |  |                 # if we are not Nico :) then just push, no mirror | 
					
						
							|  |  |  |                 git push | 
					
						
							| 
									
										
										
										
											2016-07-16 00:07:13 +02:00
										 |  |  |                 # push also new branch and set up tracking | 
					
						
							|  |  |  |                 git push -u origin "${target_branch}" | 
					
						
							| 
									
										
										
										
											2016-07-07 07:53:21 +02:00
										 |  |  |             ;; | 
					
						
							|  |  |  |             *) | 
					
						
							|  |  |  |                 make helper=${helper} WEBDIR=${WEBDIR} pub | 
					
						
							|  |  |  |             ;; | 
					
						
							|  |  |  |         esac | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # publish man, speeches, website | 
					
						
							|  |  |  |         if [ "$masterbranch" = yes ]; then | 
					
						
							|  |  |  |             make helper=${helper} WEBDIR=${WEBDIR} web-release-all | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             make helper=${helper} WEBDIR=${WEBDIR} web-release-all-no-latest | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Ensure that pypi release has the right version | 
					
						
							|  |  |  |         "$0" version | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Create and publish package for pypi | 
					
						
							|  |  |  |         make helper=${helper} WEBDIR=${WEBDIR} pypi-release | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         case "$run_as" in | 
					
						
							|  |  |  |             freebsd) | 
					
						
							|  |  |  |             ;; | 
					
						
							|  |  |  |             *) | 
					
						
							|  |  |  |                 # Archlinux release is based on pypi | 
					
						
							|  |  |  |                 make archlinux-release | 
					
						
							|  |  |  |             ;; | 
					
						
							|  |  |  |         esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Announce change on ML | 
					
						
							|  |  |  |         make helper=${helper} WEBDIR=${WEBDIR} ml-release | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cat << eof | 
					
						
							|  |  |  | Manual steps post release: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     - linkedin | 
					
						
							|  |  |  |     - hackernews | 
					
						
							|  |  |  |     - reddit | 
					
						
							|  |  |  |     - twitter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         case "$run_as" in | 
					
						
							|  |  |  |             freebsd) | 
					
						
							|  |  |  |                 cat <<eof | 
					
						
							|  |  |  | Additional steps post release: | 
					
						
							|  |  |  |     - archlinux release | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  |             ;; | 
					
						
							|  |  |  |             *) | 
					
						
							|  |  |  |             ;; | 
					
						
							|  |  |  |         esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     test) | 
					
						
							|  |  |  |         export PYTHONPATH="$(pwd -P)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if [ $# -lt 1 ]; then | 
					
						
							|  |  |  |             python3 -m cdist.test | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             python3 -m unittest "$@" | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-10 11:21:52 +02:00
										 |  |  |     pep8) | 
					
						
							|  |  |  |         pep8 ${basedir} | less | 
					
						
							|  |  |  |         echo "Please review pep8 report." | 
					
						
							|  |  |  |         while true | 
					
						
							|  |  |  |         do | 
					
						
							|  |  |  |             echo "Continue (yes/no)?" | 
					
						
							|  |  |  |             any= | 
					
						
							|  |  |  |             read any | 
					
						
							|  |  |  |             case "$any" in | 
					
						
							|  |  |  |                 yes) | 
					
						
							|  |  |  |                     break | 
					
						
							|  |  |  |                 ;; | 
					
						
							|  |  |  |                 no) | 
					
						
							|  |  |  |                     exit 1 | 
					
						
							|  |  |  |                 ;; | 
					
						
							|  |  |  |                 *) | 
					
						
							|  |  |  |                     echo "Please answer with 'yes' or 'no' explicitly." | 
					
						
							|  |  |  |                 ;; | 
					
						
							|  |  |  |         esac | 
					
						
							|  |  |  |         done | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  |     version-branch) | 
					
						
							|  |  |  |         "$0" changelog-version | cut -d. -f '1,2' | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     version) | 
					
						
							|  |  |  |         echo "VERSION = \"$(git describe)\"" > cdist/version.py | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-16 01:38:22 +02:00
										 |  |  |     target-version) | 
					
						
							|  |  |  |         target_version=$($0 changelog-version) | 
					
						
							|  |  |  |         echo "VERSION = \"${target_version}\"" > cdist/version.py | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-17 21:28:16 +02:00
										 |  |  |     *) | 
					
						
							|  |  |  |         echo "Unknown helper target $@ - aborting" | 
					
						
							|  |  |  |         exit 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | esac |