#!/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 a complete godoc app in $APPDIR. # It copies the cmd/godoc and src/go/... sources from GOROOT, # synthesizes an app.yaml file, and creates the .zip, index, and # configuration files. # # 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, "go env" # is consulted to find the $GOROOT. # # The script creates a .zip file representing the $GOROOT file system # and computes the corresponding 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. GODOC=golang.org/x/tools/cmd/godoc CONFIGFILE=$GODOC/appconfig.go error() { echo "error: $1" exit 2 } getArgs() { if [ -z $APPENGINE_SDK ]; then error "APPENGINE_SDK environment variable not set" fi if [ ! -x $APPENGINE_SDK/goapp ]; then error "couldn't find goapp command in $APPENGINE_SDK" fi if [ -z $GOROOT ]; then GOROOT=$(go env GOROOT) echo "GOROOT not set explicitly, using go env value 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 [ -e $APPDIR ]; then error "$APPDIR exists; check and remove it before trying again" fi # reporting echo "GOROOT = $GOROOT" echo "APPDIR = $APPDIR" } fetchGodoc() { echo "*** Fetching godoc (if not already in GOPATH)" unset GOBIN go=$APPENGINE_SDK/goapp $go get -d -tags appengine $GODOC mkdir -p $APPDIR/$GODOC cp $(find $($go list -f '{{.Dir}}' $GODOC) -mindepth 1 -maxdepth 1 -type f) $APPDIR/$GODOC/ } makeAppYaml() { echo "*** make $APPDIR/app.yaml" cat > $APPDIR/app.yaml < $APPDIR/$CONFIGFILE <