diff options
Diffstat (limited to 'maketarball.sh')
-rwxr-xr-x | maketarball.sh | 179 |
1 files changed, 150 insertions, 29 deletions
diff --git a/maketarball.sh b/maketarball.sh index 2ee78016..5f17e578 100755 --- a/maketarball.sh +++ b/maketarball.sh @@ -1,57 +1,178 @@ #!/bin/bash -# usage: maketarball -# maketarball <tag> +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011 Free Software Foundation, Inc # -# With no arguments, this creates a source tarball from git master with a -# filename based on today's date. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# With a <tag> argument, this creates a tarball of the tag. +# 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# usage: maketarball [-drh] REVISH +# +# Creates a tarball of the repository at rev REVISH. + +# If -d is passed in, then it adds the date to the directory name. +# +# If -r is passed in, then it does some additional things required +# for a release-ready tarball. +# +# If -h is passed in, shows help and exits. # # Examples: # -# ./maketarball # ./maketarball v0.0.2 +# ./maketarball -d master +# ./maketarball -r v0.0.2 -NOWDATE=`date "+%Y-%m-%d"` -if [ -z "$1" ] -then - REVISH=master - PREFIX="$NOWDATE-$REVISH" -else - REVISH=$1 - PREFIX="$REVISH" +USAGE="Usage: $0 -h | [-dr] REVISH" + +REVISH="none" +PREFIX="none" +NOWDATE="" +RELEASE="no" + +while getopts ":dhr" opt; +do + case "$opt" in + h) + echo "$USAGE" + echo "" + echo "Creates a tarball of the repository at rev REVISH." + echo "" + echo " -h Shows this help message" + echo " -d Includes date in tar file name and directory" + echo " -r Performs other release-related actions" + exit 0 + ;; + d) + NOWDATE=`date "+%Y-%m-%d-"` + shift $((OPTIND-1)) + ;; + r) + RELEASE="yes" + shift $((OPTIND-1)) + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + echo "$USAGE" >&2 + ;; + esac +done + +if [[ -z "$1" ]]; then + echo "$USAGE"; + exit 1; fi -# convert PREFIX to all lowercase. -# nix the v from tag names. +REVISH=$1 +PREFIX="$NOWDATE$REVISH" + +# convert PREFIX to all lowercase and nix the v from tag names. PREFIX=`echo "$PREFIX" | tr '[A-Z]' '[a-z]' | sed s/v//` -echo "== REVISH $REVISH" -echo "== PREFIX $PREFIX" +# build the filename base minus the .tar.gz stuff--this is also +# the directory in the tarball. +FNBASE="mediagoblin-$PREFIX" + +STARTDIR=`pwd` + +function cleanup { + pushd $STARTDIR + + if [[ -e tmp ]] + then + echo "+ cleaning up tmp/" + rm -rf tmp + fi + popd +} + +echo "+ Building tarball from: $REVISH" +echo "+ Using prefix: $PREFIX" +echo "+ Release?: $RELEASE" echo "" -echo "generating archive...." +if [[ -e tmp ]] +then + echo "+ there's an existing tmp/. please remove it." + exit 1 +fi + +mkdir $STARTDIR/tmp +echo "+ generating archive...." git archive \ --format=tar \ - --prefix=mediagoblin-$PREFIX/ \ - $REVISH > mediagoblin-$PREFIX.tar + --prefix=$FNBASE/ \ + $REVISH > tmp/$FNBASE.tar if [[ $? -ne 0 ]] then - echo "git archive command failed. See above text for reason." - if [[ -e mediagoblin-$PREFIX.tar ]] + echo "+ git archive command failed. See above text for reason." + cleanup + exit 1 +fi + + +if [[ $RELEASE = "yes" ]] +then + pushd tmp/ + tar -xvf $FNBASE.tar + + pushd $FNBASE + pushd docs + + echo "+ generating html docs" + make html + if [[ $? -ne 0 ]] then - rm mediagoblin-$PREFIX.tar + echo "+ sphinx docs generation failed. See above text for reason." + cleanup + exit 1 fi - exit 1; + + # NOTE: this doesn't work for gmg prior to v0.0.4. + echo "+ generating texinfo docs (doesn't work prior to v0.0.4)" + make info + popd + + echo "+ moving docs to the right place" + if [[ -e docs/build/html/ ]] + then + mv docs/build/html/ docs/html/ + mv docs/build/texinfo/ docs/texinfo/ + + rm -rf docs/build/ + rm -rf docs/source/mgext/*.pyc + else + # this is the old directory structure pre-0.0.4 + mv docs/_build/html/ docs/html/ + + rm -rf docs/_build/ + rm -rf docs/mgext/*.pyc + fi + + popd + + tar -cvf $FNBASE.tar $FNBASE + popd fi -echo "compressing...." -gzip mediagoblin-$PREFIX.tar -echo "archive at mediagoblin-$PREFIX.tar.gz" +echo "+ compressing...." +gzip tmp/$FNBASE.tar + +echo "+ archive at tmp/$FNBASE.tar.gz" -echo "done."
\ No newline at end of file +echo "+ done." |