#!/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 .zip file representing the $GOROOT file system # and computes the corresponding search index files. # # These are used in production (see app.prod.yaml) set -e -u -x ZIPFILE=godoc.zip INDEXFILE=godoc.index SPLITFILES=index.split. error() { echo "error: $1" exit 2 } install() { go install } getArgs() { if [ ! -v GODOC_DOCSET ]; then GODOC_DOCSET="$(go env GOROOT)" echo "GODOC_DOCSET not set explicitly, using GOROOT instead" fi # safety checks if [ ! -d "$GODOC_DOCSET" ]; then error "$GODOC_DOCSET is not a directory" fi # reporting echo "GODOC_DOCSET = $GODOC_DOCSET" } makeZipfile() { echo "*** make $ZIPFILE" rm -f $ZIPFILE goroot ln -s "$GODOC_DOCSET" goroot zip -q -r $ZIPFILE goroot/* # glob to ignore dotfiles (like .git) rm goroot } makeIndexfile() { echo "*** make $INDEXFILE" godoc=$(go env GOPATH)/bin/godoc # NOTE: run godoc without GOPATH set. Otherwise third-party packages will end up in the index. GOPATH= $godoc -write_index -goroot goroot -index_files=$INDEXFILE -zip=$ZIPFILE } splitIndexfile() { echo "*** split $INDEXFILE" rm -f $SPLITFILES* split -b8m $INDEXFILE $SPLITFILES } cd $(dirname $0) install getArgs "$@" makeZipfile makeIndexfile splitIndexfile rm $INDEXFILE echo "*** setup complete"