#!/bin/sh # Run this after each non-alpha release, to update the web documentation at # http://www.gnu.org/software/$pkg/manual/ # This script must be run from the top-level directory, # assumes you're using git for revision control, # and requires a .prev-version file as well as a Makefile, # from which it extracts the version number and package name, respectively. # Also, it assumes all documentation is in the doc/ sub-directory. VERSION=2009-07-21.16; # UTC # Copyright (C) 2009-2012 Free Software Foundation, Inc. # This program 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. # This program 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 this program. If not, see . # Requirements: everything required to bootstrap your package, # plus these: git, cvs, cvsu, rsync, mktemp ME=`basename "$0"` warn() { printf '%s: %s\n' "$ME" "$*" >&2; } die() { warn "$*"; exit 1; } help_version() { case $1 in --help) cat <. EOF exit ;; --version) year=`echo "$VERSION" | sed 's/[^0-9].*//'` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF exit ;; *) die "unrecognized option: $1";; esac } case $# in 0) ;; 1) help_version $1 ;; *) die "$ME: too many options" ;; esac prev=.prev-version version=$(cat $prev) || die "$ME: no $prev file?" pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile) || die "$ME: no Makefile?" tmp_branch=web-doc-$version-$$ cleanup() { __st=$?; rm -rf "$tmp" git checkout master git branch -d $tmp_branch exit $__st } trap cleanup 0 trap 'exit $?' 1 2 13 15 # We must build using sources for which --version reports the # just-released version number, not some string like 7.6.18-20761. # That version string propagates into all documentation. git checkout -b $tmp_branch v$version ok=0 ./bootstrap && ./configure && make && make web-manual && ok=1 test $ok = 1 || exit 1 tmp=$(mktemp -d --tmpdir=. web-doc-update.XXXXXX) || exit 1 ( cd $tmp \ && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg ) rsync -avP doc/manual/ $tmp/$pkg/manual ( cd $tmp/$pkg/manual # Add any new files: cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko cvs ci -m $version ) # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "VERSION=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: