| 
									
										
										
										
											2011-03-25 20:56:25 +01:00
										 |  |  | #!/bin/sh | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2013-04-09 15:12:11 +02:00
										 |  |  | # 2011-2013 Nico Schottelius (nico-cdist at schottelius.org) | 
					
						
							| 
									
										
										
										
											2011-03-25 20:56:25 +01:00
										 |  |  | # | 
					
						
							|  |  |  | # 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/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2013-06-03 22:29:49 +02:00
										 |  |  | # This file contains the heavy lifting found usually in the Makefile | 
					
						
							| 
									
										
										
										
											2011-03-25 20:56:25 +01:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2011-03-20 03:23:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-20 09:24:05 +02:00
										 |  |  | basedir=${0%/*}/../ | 
					
						
							|  |  |  | # Change to checkout directory | 
					
						
							|  |  |  | cd "$basedir" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | version=$(git describe) | 
					
						
							| 
									
										
										
										
											2011-11-16 08:10:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  | option=$1; shift | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | case "$option" in | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |     changelog-changes) | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  |         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" | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |     changelog-version) | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  |         # get version from changelog | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//' | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-03 22:29:49 +02:00
										 |  |  |     check-date) | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  |         # verify date in changelog is today | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2011-03-25 22:10:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  |     check-unittest) | 
					
						
							|  |  |  |         "$0" test | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |     blog) | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  |         version=$1; shift | 
					
						
							|  |  |  |         blogfile=$1; shift | 
					
						
							| 
									
										
										
										
											2013-07-09 15:46:57 +02:00
										 |  |  |         dir=${blogfile%/*} | 
					
						
							|  |  |  |         file=${blogfile##*/} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |         cat << eof > "$blogfile" | 
					
						
							|  |  |  | [[!meta title="Cdist $version released"]] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-03 22:33:48 +02:00
										 |  |  | Here's a short overview about the changes found in version ${version}: | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 15:46:57 +02:00
										 |  |  |         $0 changelog-changes "$version" >> "$blogfile" | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         cat << eof >> "$blogfile" | 
					
						
							|  |  |  | For more information visit the [[cdist homepage|software/cdist]]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [[!tag cdist config unix]] | 
					
						
							|  |  |  | eof | 
					
						
							| 
									
										
										
										
											2013-07-09 15:46:57 +02:00
										 |  |  |         cd "$dir" | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |         git add "$file" | 
					
						
							| 
									
										
										
										
											2013-07-09 15:46:57 +02:00
										 |  |  |         # Allow git commit to fail if there are no changes | 
					
						
							|  |  |  |         git commit -m "cdist blog update: $version" "$blogfile" || true | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 17:22:56 +02:00
										 |  |  |     ml-release) | 
					
						
							|  |  |  |         version=$1; shift | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |         to_a=cdist | 
					
						
							|  |  |  |         to_d=l.schottelius.org | 
					
						
							|  |  |  |         to=${to_a}@${to_d} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         from_a=nico-cdist | 
					
						
							|  |  |  |         from_d=schottelius.org | 
					
						
							|  |  |  |         from=${from_a}@${from_d} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         (  | 
					
						
							|  |  |  |         cat << eof | 
					
						
							|  |  |  | From: Nico -telmich- Schottelius <$from> | 
					
						
							|  |  |  | To: cdist mailing list <$to> | 
					
						
							| 
									
										
										
										
											2012-11-07 12:13:06 +01:00
										 |  |  | Subject: cdist $version released | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Hello .*, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cdist $version has been released with the following changes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 17:22:56 +02:00
										 |  |  |         "$0" changelog-changes "$version" | 
					
						
							| 
									
										
										
										
											2012-11-07 12:12:26 +01:00
										 |  |  |         cat << eof | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Cheers, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Nico | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | --  | 
					
						
							|  |  |  | Automatisation at its best level. With cdist. | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  |         ) | /usr/sbin/sendmail -f "$from" "$to" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 17:22:56 +02:00
										 |  |  |     freecode-release) | 
					
						
							|  |  |  |         version=$1; shift | 
					
						
							| 
									
										
										
										
											2012-10-31 08:52:40 +01:00
										 |  |  |         printf "Enter tag list for freecode release %s> " "$version" | 
					
						
							|  |  |  |         read taglist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         printf "Enter changelog for freecode release %s> " "$version" | 
					
						
							|  |  |  |         read changelog | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         echo "Submit preview" | 
					
						
							| 
									
										
										
										
											2014-05-04 08:39:57 +02:00
										 |  |  |         python2 $(which freecode-submit) -P cdist \ | 
					
						
							|  |  |  |             -v "$version" -c "$changelog" \ | 
					
						
							|  |  |  |             -t "$taglist" | 
					
						
							| 
									
										
										
										
											2012-10-31 08:52:40 +01:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |     release-git-tag) | 
					
						
							|  |  |  |         target_version=$($0 changelog-version) | 
					
						
							| 
									
										
										
										
											2014-03-19 18:58:54 +01:00
										 |  |  |         if git rev-parse --verify refs/tags/$target_version 2>/dev/null; then | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |             echo "Tag for $target_version exists, aborting" | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |         printf "Enter tag description for ${target_version}: " | 
					
						
							|  |  |  |         read tagmessage | 
					
						
							|  |  |  |         git tag "$target_version" -m "$$tagmessage" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 21:20:05 +02:00
										 |  |  |     release) | 
					
						
							|  |  |  |         set -e | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |         target_version=$($0 changelog-version) | 
					
						
							|  |  |  |         target_branch=$($0 version-branch) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         echo "Beginning release process for $target_version" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 21:20:05 +02:00
										 |  |  |         # First check everything is sane | 
					
						
							|  |  |  |         "$0" check-date | 
					
						
							|  |  |  |         "$0" check-unittest | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Generate version file to be included in packaging | 
					
						
							|  |  |  |         "$0" version | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Ensure the git status is clean, else abort | 
					
						
							| 
									
										
										
										
											2013-09-04 23:11:41 +02:00
										 |  |  |         if ! git diff-index --name-only --exit-code HEAD ; then | 
					
						
							| 
									
										
										
										
											2013-09-04 23:14:02 +02:00
										 |  |  |             echo "Unclean tree, see files above, aborting" | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Ensure we are on the master branch | 
					
						
							| 
									
										
										
										
											2014-01-20 14:43:48 +01:00
										 |  |  |         masterbranch=yes | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |         if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then | 
					
						
							|  |  |  |             echo "Releases are happening from the master branch, aborting" | 
					
						
							| 
									
										
										
										
											2014-01-20 14:40:54 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             echo "Enter the magic word to release anyway" | 
					
						
							|  |  |  |             read magicword | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-20 14:43:48 +01:00
										 |  |  |             if [ "$magicword" = "iknowwhatido" ]; then | 
					
						
							|  |  |  |                 masterbranch=no | 
					
						
							|  |  |  |             else | 
					
						
							| 
									
										
										
										
											2014-01-20 14:40:54 +01:00
										 |  |  |                 exit 1 | 
					
						
							|  |  |  |             fi | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-20 14:43:48 +01:00
										 |  |  |         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 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-20 14:43:48 +01:00
										 |  |  |             # Merge master branch into version branch | 
					
						
							|  |  |  |             git checkout "$target_branch" | 
					
						
							|  |  |  |             git merge master | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Verify that after the merge everything works | 
					
						
							|  |  |  |         "$0" check-date | 
					
						
							|  |  |  |         "$0" check-unittest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Generate man pages (indirect check if they build) | 
					
						
							|  |  |  |         make man | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Generate speeches (indirect check if they build) | 
					
						
							|  |  |  |         make speeches | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #############################################################  | 
					
						
							|  |  |  |         # Everything green, let's do the release | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Tag the current commit | 
					
						
							|  |  |  |         "$0" release-git-tag | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Also merge back the version branch | 
					
						
							| 
									
										
										
										
											2014-01-20 14:48:05 +01:00
										 |  |  |         if [ "$masterbranch" = yes ]; then | 
					
						
							|  |  |  |             git checkout master | 
					
						
							|  |  |  |             git merge "$target_branch" | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:58:52 +02:00
										 |  |  |         # Publish git changes | 
					
						
							|  |  |  |         make pub | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:58:52 +02:00
										 |  |  |         # publish man, speeches, website | 
					
						
							| 
									
										
										
										
											2014-02-14 20:58:12 +01:00
										 |  |  |         if [ "$masterbranch" = yes ]; then | 
					
						
							|  |  |  |             make web-release-all | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             make web-release-all-no-latest | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-09 11:46:29 +02:00
										 |  |  |         # Ensure that pypi release has the right version | 
					
						
							|  |  |  |         "$0" version | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:58:52 +02:00
										 |  |  |         # Create and publish package for pypi | 
					
						
							|  |  |  |         make pypi-release | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:58:52 +02:00
										 |  |  |         # Archlinux release is based on pypi | 
					
						
							|  |  |  |         make archlinux-release | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:58:52 +02:00
										 |  |  |         # Announce change on Freecode | 
					
						
							|  |  |  |         make freecode-release | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Announce change on ML | 
					
						
							|  |  |  |         make ml-release | 
					
						
							| 
									
										
										
										
											2013-09-05 13:19:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         cat << eof | 
					
						
							|  |  |  | Manual steps post release: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     - linkedin | 
					
						
							|  |  |  |     - hackernews | 
					
						
							| 
									
										
										
										
											2013-09-05 13:29:28 +02:00
										 |  |  |     - reddit | 
					
						
							| 
									
										
										
										
											2013-09-05 13:19:47 +02:00
										 |  |  |     - twitter | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | eof | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 21:20:05 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     test) | 
					
						
							| 
									
										
										
										
											2012-11-01 14:13:52 +01:00
										 |  |  |         export PYTHONPATH="$(pwd -P)" | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if [ $# -lt 1 ]; then | 
					
						
							|  |  |  |             python3 -m cdist.test | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             python3 -m unittest "$@" | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2013-07-09 15:32:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:33:26 +02:00
										 |  |  |     version-branch) | 
					
						
							|  |  |  |         "$0" changelog-version | cut -d. -f '1,2' | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-07 21:14:51 +02:00
										 |  |  |     version) | 
					
						
							| 
									
										
										
										
											2013-06-07 21:36:59 -04:00
										 |  |  |         echo "VERSION = \"$(git describe)\"" > cdist/version.py | 
					
						
							| 
									
										
										
										
											2013-06-07 21:14:51 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2011-03-25 22:10:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     *) | 
					
						
							| 
									
										
										
										
											2013-07-09 14:53:00 +02:00
										 |  |  |         echo "Unknown helper target $@ - aborting" | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |         exit 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2011-10-02 15:56:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | esac |