| 
									
										
										
										
											2011-03-25 20:56:25 +01:00
										 |  |  | #!/bin/sh | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 2011 Nico Schottelius (nico-cdist at schottelius.org) | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Push a directory to a target, both sides have the same name (i.e. explorers) | 
					
						
							|  |  |  | # or | 
					
						
							|  |  |  | # Pull a directory from a target, both sides have the same name (i.e. explorers) | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2011-03-20 03:23:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-29 16:51:11 +02:00
										 |  |  | # exit on any error | 
					
						
							| 
									
										
										
										
											2011-03-29 18:12:19 +02:00
										 |  |  | #set -e | 
					
						
							| 
									
										
										
										
											2011-03-29 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 06:55:01 +02:00
										 |  |  | basedir=${0%/*} | 
					
						
							| 
									
										
										
										
											2011-11-16 08:10:50 +01:00
										 |  |  | version=$(git describe) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-20 03:23:13 +01:00
										 |  |  | # Manpage and HTML | 
					
						
							| 
									
										
										
										
											2011-09-26 20:14:04 +02:00
										 |  |  | A2XM="a2x -f manpage --no-xmllint -a encoding=UTF-8" | 
					
						
							| 
									
										
										
										
											2011-09-27 00:12:11 +02:00
										 |  |  | A2XH="a2x -f xhtml --no-xmllint -a encoding=UTF-8" | 
					
						
							| 
									
										
										
										
											2011-02-26 11:46:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-25 20:49:09 +01:00
										 |  |  | # Developer webbase | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | WEBDIR=$HOME/niconetz | 
					
						
							| 
									
										
										
										
											2011-11-16 08:10:50 +01:00
										 |  |  | WEBBASE=$WEBDIR/software/cdist | 
					
						
							| 
									
										
										
										
											2011-11-17 13:25:47 +01:00
										 |  |  | WEBMAN=$WEBBASE/man/$version | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | WEBPAGE=${WEBBASE}.mdwn | 
					
						
							| 
									
										
										
										
											2011-03-21 14:00:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 10:21:10 +01:00
										 |  |  | # Documentation | 
					
						
							| 
									
										
										
										
											2012-10-25 17:17:52 +02:00
										 |  |  | MANDIR=docs/man | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | MAN1DSTDIR=${MANDIR}/man1 | 
					
						
							|  |  |  | MAN7DSTDIR=${MANDIR}/man7 | 
					
						
							| 
									
										
										
										
											2012-10-25 17:17:52 +02:00
										 |  |  | SPEECHESDIR=docs/speeches | 
					
						
							| 
									
										
										
										
											2011-03-09 08:53:19 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 06:55:01 +02:00
										 |  |  | # Change to checkout directory | 
					
						
							|  |  |  | cd "$basedir" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | case "$1" in | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |     man) | 
					
						
							|  |  |  |         set -e | 
					
						
							|  |  |  |         "$0" mangen | 
					
						
							|  |  |  |         "$0" mantype | 
					
						
							|  |  |  |         "$0" manbuild | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     manbuild) | 
					
						
							|  |  |  |         trap abort INT | 
					
						
							|  |  |  |         abort() { | 
					
						
							|  |  |  |             kill 0 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         for section in 1 7; do | 
					
						
							|  |  |  |             for src in ${MANDIR}/man${section}/*.text; do | 
					
						
							|  |  |  |                 manpage="${src%.text}.$section" | 
					
						
							|  |  |  |                 if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then | 
					
						
							|  |  |  |                     echo "Compiling man page for $src" | 
					
						
							|  |  |  |                     $A2XM "$src" | 
					
						
							|  |  |  |                 fi | 
					
						
							|  |  |  |                 htmlpage="${src%.text}.html" | 
					
						
							|  |  |  |                 if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then | 
					
						
							|  |  |  |                     echo "Compiling html page for $src" | 
					
						
							|  |  |  |                     $A2XH "$src" | 
					
						
							|  |  |  |                 fi | 
					
						
							|  |  |  |             done | 
					
						
							|  |  |  |         done | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     mantype) | 
					
						
							| 
									
										
										
										
											2012-10-25 22:35:20 +02:00
										 |  |  |         for mansrc in conf/type/*/man.text; do | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |             dst="$(echo $mansrc | sed -e 's;conf/;cdist-;'  -e 's;/;;' -e 's;/man;;' -e 's;^;docs/man/man7/;')" | 
					
						
							|  |  |  |             ln -sf "../../../$mansrc" "$dst" | 
					
						
							|  |  |  |         done | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     mangen) | 
					
						
							|  |  |  |         ${MANDIR}/cdist-reference.text.sh | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |     dist) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         set -e | 
					
						
							|  |  |  |         # Do the checks | 
					
						
							|  |  |  |         $0 dist-check | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Git changes - everything depends on this | 
					
						
							|  |  |  |         $0 dist-tag | 
					
						
							|  |  |  |         $0 dist-branch-merge | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:42:06 +02:00
										 |  |  |         # Pypi first - is the base for others | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |         $0 dist-pypi | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         # Archlinux depends on successful pypi ;-) | 
					
						
							|  |  |  |         $0 dist-archlinux | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         # Update website (includes documentation) | 
					
						
							|  |  |  |         $0 web | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $0 pub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |         $0 dist-post | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |     changelog-version) | 
					
						
							|  |  |  |         # get version from changelog and ensure it's not already present | 
					
						
							|  |  |  |         grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//' | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dist-check) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:38:00 +02:00
										 |  |  |         set -e | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         echo "Verifying documentation building works ..." | 
					
						
							| 
									
										
										
										
											2012-10-26 18:38:00 +02:00
										 |  |  |         $0 clean  | 
					
						
							|  |  |  |         $0 man | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         changelog_version=$($0 changelog-version) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:38:00 +02:00
										 |  |  |         echo "Target version from changelog: $changelog_version" | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if git show --quiet $changelog_version >/dev/null 2>&1; then | 
					
						
							|  |  |  |             echo "Version $changelog_version already exists, aborting." | 
					
						
							|  |  |  |             exit 1 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # verify date in changelog | 
					
						
							|  |  |  |         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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |     dist-post) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         cat << notes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     To be done manually... | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |         - freecode release | 
					
						
							|  |  |  |         - blog entry | 
					
						
							|  |  |  |         - linkedin entry | 
					
						
							|  |  |  |         - mailinglist update | 
					
						
							|  |  |  | notes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dist-tag) | 
					
						
							|  |  |  |         version=$($0 changelog-version) | 
					
						
							|  |  |  |         # add tag | 
					
						
							|  |  |  |         printf "Enter tag description for %s> " "$version" | 
					
						
							|  |  |  |         read tagmessage | 
					
						
							|  |  |  |         git tag "$version" -m "$tagmessage" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dist-branch-merge) | 
					
						
							|  |  |  |         version=$($0 changelog-version) | 
					
						
							|  |  |  |         target_branch=${version%\.*} | 
					
						
							|  |  |  |         current_branch=$(git rev-parse --abbrev-ref HEAD) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:35:47 +02:00
										 |  |  |         printf "Press enter to git merge $current_branch into \"$target_branch\" > " | 
					
						
							|  |  |  |         read prompt | 
					
						
							|  |  |  |         git checkout "$target_branch" | 
					
						
							|  |  |  |         git merge "$current_branch" | 
					
						
							|  |  |  |         git checkout "$current_branch" | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-26 18:13:17 +02:00
										 |  |  |     dist-archlinux) | 
					
						
							|  |  |  |         ./PKGBUILD.in | 
					
						
							| 
									
										
										
										
											2012-10-26 18:20:09 +02:00
										 |  |  |         makepkg -c | 
					
						
							| 
									
										
										
										
											2012-10-26 18:47:49 +02:00
										 |  |  |         makepkg -c --source | 
					
						
							| 
									
										
										
										
											2012-10-26 18:13:17 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  |     dist-pypi) | 
					
						
							| 
									
										
										
										
											2012-10-26 17:42:26 +02:00
										 |  |  |         $0 man | 
					
						
							| 
									
										
										
										
											2012-10-26 07:37:18 +02:00
										 |  |  |         $0 version | 
					
						
							| 
									
										
										
										
											2012-10-26 18:47:49 +02:00
										 |  |  |         python3 setup.py sdist upload | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     speeches) | 
					
						
							|  |  |  |         cd "$SPEECHESDIR" | 
					
						
							|  |  |  |         for speech in *tex; do | 
					
						
							|  |  |  |             pdflatex "$speech" | 
					
						
							|  |  |  |             pdflatex "$speech" | 
					
						
							|  |  |  |             pdflatex "$speech" | 
					
						
							| 
									
										
										
										
											2012-05-14 18:32:45 +02:00
										 |  |  |         done | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     webmain) | 
					
						
							|  |  |  |         cp README ${WEBPAGE} | 
					
						
							|  |  |  |         cd ${WEBDIR} && git commit -m "cdist main update" ${WEBPAGE} | 
					
						
							|  |  |  |         cd ${WEBDIR} && make pub | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-25 18:29:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     web) | 
					
						
							|  |  |  |         cp README ${WEBPAGE} | 
					
						
							|  |  |  |         rm -rf ${WEBMAN} | 
					
						
							|  |  |  |         mkdir -p ${WEBMAN}/man1 ${WEBMAN}/man7 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${WEBMAN}/man1  | 
					
						
							|  |  |  |         cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${WEBMAN}/man7 | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         cd ${WEBDIR} && git add ${WEBBASE} | 
					
						
							|  |  |  |         cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} | 
					
						
							|  |  |  |         cd ${WEBDIR} && make pub | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Fix ikiwiki, which does not like symlinks for pseudo security | 
					
						
							|  |  |  |         ssh tee.schottelius.org \ | 
					
						
							|  |  |  |           "cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man && | 
					
						
							|  |  |  |                 rm -f latest && ln -sf "$version" latest" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      p|pu|pub) | 
					
						
							|  |  |  |           for remote in "" github sf ethz; do | 
					
						
							|  |  |  |                 echo "Pushing to $remote" | 
					
						
							|  |  |  |                 git push --mirror $remote | 
					
						
							|  |  |  |           done | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |     clean) | 
					
						
							|  |  |  |         rm -f ${MAN7DSTDIR}/cdist-reference.text | 
					
						
							| 
									
										
										
										
											2012-10-25 23:49:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |         find "${MANDIR}" -mindepth 2 -type l \ | 
					
						
							|  |  |  |             -o -name "*.1" \ | 
					
						
							|  |  |  |             -o -name "*.7" \ | 
					
						
							|  |  |  |             -o -name "*.html" \ | 
					
						
							|  |  |  |             -o -name "*.xml" \ | 
					
						
							|  |  |  |         | xargs rm -f | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         find * -name __pycache__  | xargs rm -rf | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-26 07:37:18 +02:00
										 |  |  |     clean-dist) | 
					
						
							| 
									
										
										
										
											2012-10-26 18:13:17 +02:00
										 |  |  |         rm -f cdist/version.py MANIFEST PKGBUILD | 
					
						
							| 
									
										
										
										
											2012-10-26 07:37:18 +02:00
										 |  |  |         rm -rf cache/ dist/ | 
					
						
							| 
									
										
										
										
											2012-10-26 18:13:17 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Archlinux | 
					
						
							|  |  |  |         rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz | 
					
						
							|  |  |  |         rm -rf pkg/ src/ | 
					
						
							| 
									
										
										
										
											2012-10-26 07:37:18 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |     very-clean) | 
					
						
							|  |  |  |         $0 clean | 
					
						
							| 
									
										
										
										
											2012-10-26 07:37:18 +02:00
										 |  |  |         $0 clean-dist | 
					
						
							| 
									
										
										
										
											2012-10-25 19:07:50 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     test) | 
					
						
							|  |  |  |         shift # skip t | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if [ $# -lt 1 ]; then | 
					
						
							|  |  |  |             python3 -m cdist.test | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             python3 -m unittest "$@" | 
					
						
							|  |  |  |         fi | 
					
						
							| 
									
										
										
										
											2012-10-25 18:28:19 +02:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2011-03-25 22:10:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 23:45:56 +02:00
										 |  |  |     version) | 
					
						
							|  |  |  |         echo "VERSION=\"$version\"" > cdist/version.py | 
					
						
							| 
									
										
										
										
											2012-10-25 23:43:12 +02:00
										 |  |  |     ;; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |     *) | 
					
						
							|  |  |  |         echo '' | 
					
						
							|  |  |  |         echo 'Welcome to cdist!' | 
					
						
							|  |  |  |         echo '' | 
					
						
							|  |  |  |         echo 'Here are the possible targets:' | 
					
						
							|  |  |  |         echo '' | 
					
						
							| 
									
										
										
										
											2012-10-25 22:35:20 +02:00
										 |  |  |         echo '    clean: Remove build stuff' | 
					
						
							|  |  |  |         echo '    man: Build manpages (requires Asciidoc)' | 
					
						
							|  |  |  |         echo '    test: Run tests' | 
					
						
							| 
									
										
										
										
											2012-10-25 18:44:05 +02:00
										 |  |  |         echo '' | 
					
						
							|  |  |  |         echo '' | 
					
						
							|  |  |  |         echo "Unknown target, \"$1\"" >&2 | 
					
						
							|  |  |  |         exit 1 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2011-10-02 15:56:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-25 21:04:26 +01:00
										 |  |  | esac |