| #!/usr/bin/env bash | 
 | # | 
 | # Copyright (c) 2015 Google Inc. | 
 | # Kevin Klues <klueska@cs.berkeley.edu> | 
 | # See LICENSE for details. | 
 |  | 
 | function short_description() { | 
 | 	echo "Launch a Go 9pserver for Akaros" | 
 | } | 
 |  | 
 | function usage() { | 
 | 	echo "Usage:" | 
 | 	echo "    ${cmd} -h | --help" | 
 | 	echo "    ${cmd} [ --gopath=<gp> ]" | 
 | 	echo "    ${cmd//?/ } [ --akaros-9p-root=<mnt> ]" | 
 | 	echo "    ${cmd//?/ } [ --ufs-port=<port> ]" | 
 | 	echo "    ${cmd//?/ } [ --clear-mount ]" | 
 | 	echo "    ${cmd//?/ } [ --rebuild-server ]" | 
 | 	echo "" | 
 | 	echo "Options:" | 
 | 	echo "    -h --help               Display this screen and exit" | 
 | 	echo "    --gopath=<gp>           The path to the go workspace" | 
 | 	echo "                            [default: \$GOPATH]" | 
 | 	echo "    --akaros-9p-root=<mnt>  The location of the akaros 9p mount point" | 
 | 	echo "                            [default: \$AKAROS_9P_ROOT]" | 
 | 	echo "    --ufs-port=<port>       Port to connect the server on" | 
 | 	echo "                            [default: 1025]" | 
 | 	echo "    --clear-mount           Clear the 9p mount folder before mounting" | 
 | 	echo "    --rebuild-server        Download and rebuild the 9pserver" | 
 | } | 
 |  | 
 | function main() { | 
 | 	# Check the sanity of our incoming variables | 
 | 	check_vars gopath akaros_9p_root ufs_port clear_mount rebuild_server | 
 | 	check_dirs gopath akaros_9p_root | 
 |  | 
 | 	# Set up the go environment variables | 
 | 	eval $(go env) | 
 |  | 
 | 	# If we don't have a server at all, force a rebuild | 
 | 	if [ ! -f ${gopath}/bin/ufs ]; then | 
 | 		rebuild_server=true | 
 | 	fi | 
 |  | 
 | 	# Get the latest 9p server which supports akaros | 
 | 	if [ ${rebuild_server} = true ]; then | 
 | 		echo "Downloading and installing the latest supported 9p server" | 
 | 		export GOOS=${GOHOSTOS} | 
 | 		export GOARCH=${GOHOSTARCH} | 
 | 		go get -d -u github.com/rminnich/go9p | 
 | 		go get -d -u github.com/rminnich/go9p/ufs | 
 | 		go install github.com/rminnich/go9p/ufs | 
 | 	fi | 
 |  | 
 | 	# Clear out the ${akaros_9p_root} directory | 
 | 	if [ ${clear_mount} = true ]; then | 
 | 		echo "Clearing out ${akaros_9p_root}" | 
 | 		rm -rf ${akaros_9p_root} | 
 | 	fi | 
 | 	mkdir -p ${akaros_9p_root} | 
 |  | 
 | 	# Kill any old instances of the ufs server on ${ufs_port} | 
 | 	ak kill-9pserver --ufs-port="${ufs_port}" | 
 |  | 
 | 	# Start a new ufs instance on ${ufs_port} | 
 | 	nohup ${gopath}/bin/ufs -akaros=true -addr=:${ufs_port} \ | 
 | 	                        -root=${akaros_9p_root} >/dev/null 2>&1 & | 
 | 	echo "Started 9p server port=${ufs_port} root=${akaros_9p_root} (pid ${!})" | 
 | } |