# # This helper is for templates for Go packages. # do_configure() { # $go_import_path must be set, or we can't link $PWD into $GOSRCPATH # nor build from modules if [ -z "$go_import_path" ]; then msg_error "\"\$go_import_path\" not set on $pkgname template.\n" fi # This isn't really configuration, but its needed by packages # that do unusual things with the build where the expect to be # able to cd into the $GOSRCPATH if [[ "${go_mod_mode}" != "off" ]] && [[ -f go.mod ]]; then # Skip GOPATH symlink for Go modules msg_normal "Building $pkgname using Go modules.\n" elif [[ "${go_get}" != "yes" ]]; then mkdir -p "$(dirname ${GOSRCPATH})" ln -fs $PWD "${GOSRCPATH}" fi } do_build() { go_package=${go_package:-$go_import_path} # Build using Go modules if there's a go.mod file if [[ "${go_mod_mode}" != "off" ]] && [[ -f go.mod ]]; then if [[ -z "${go_mod_mode}" ]] && [[ -d vendor ]]; then msg_normal "Using vendor dir for $pkgname Go dependencies.\n" go_mod_mode=vendor elif [[ "${go_mod_mode}" = "default" ]]; then # Allow templates to explicitly opt into the go tool's # default behavior. go_mod_mode= fi go build -o "${GOPATH}/bin/$(basename ${go_package})" -mod="${go_mod_mode}" -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package} else # Otherwise, build using GOPATH go get -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package} fi } do_install() { find "${GOPATH}/bin" -type f -executable | while read line do vbin "${line}" done }