#!/usr/bin/env bash # Copyright 2011 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. # This script creates the .zip, index, and configuration files for running # godoc on app-engine. # # If an argument is provided it is assumed to be the app-engine godoc directory. # Without an argument, $APPDIR is used instead. If GOROOT is not set, the # current working directory is assumed to be $GOROOT. Various sanity checks # prevent accidents. # # The script creates a .zip file representing the $GOROOT file system # and computes the correspondig search index files. These files are then # copied to $APPDIR. A corresponding godoc configuration file is created # in $APPDIR/appconfig.go. ZIPFILE=godoc.zip INDEXFILE=godoc.index SPLITFILES=index.split. CONFIGFILE=godoc/appconfig.go error() { echo "error: $1" exit 2 } getArgs() { if [ -z $GOROOT ]; then GOROOT=$(pwd) echo "GOROOT not set, using cwd instead" fi if [ -z $APPDIR ]; then if [ $# == 0 ]; then error "APPDIR not set, and no argument provided" fi APPDIR=$1 echo "APPDIR not set, using argument instead" fi # safety checks if [ ! -d $GOROOT ]; then error "$GOROOT is not a directory" fi if [ ! -x $GOROOT/src/cmd/godoc/godoc ]; then error "$GOROOT/src/cmd/godoc/godoc does not exist or is not executable" fi if [ ! -d $APPDIR ]; then error "$APPDIR is not a directory" fi if [ ! -e $APPDIR/app.yaml ]; then error "$APPDIR is not an app-engine directory; missing file app.yaml" fi if [ ! -d $APPDIR/godoc ]; then error "$APPDIR is missing directory godoc" fi # reporting echo "GOROOT = $GOROOT" echo "APPDIR = $APPDIR" } cleanup() { echo "*** cleanup $APPDIR" rm $APPDIR/$ZIPFILE rm $APPDIR/$INDEXFILE rm $APPDIR/$SPLITFILES* rm $APPDIR/$CONFIGFILE } makeZipfile() { echo "*** make $APPDIR/$ZIPFILE" zip -q -r $APPDIR/$ZIPFILE $GOROOT -i \*.go -i \*.html -i \*.css -i \*.js -i \*.txt -i \*.c -i \*.h -i \*.s -i \*.png -i \*.jpg -i \*.sh -i \*.ico } makeIndexfile() { echo "*** make $APPDIR/$INDEXFILE" OUT=/tmp/godoc.out $GOROOT/src/cmd/godoc/godoc -write_index -index_files=$APPDIR/$INDEXFILE -zip=$APPDIR/$ZIPFILE 2> $OUT if [ $? != 0 ]; then error "$GOROOT/src/cmd/godoc/godoc failed - see $OUT for details" fi } splitIndexfile() { echo "*** split $APPDIR/$INDEXFILE" split -b8m $APPDIR/$INDEXFILE $APPDIR/$SPLITFILES } makeConfigfile() { echo "*** make $APPDIR/$CONFIGFILE" cat > $APPDIR/$CONFIGFILE <