| #!/bin/bash | |
| # Copyright 2024 The ChromiumOS Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| # This downloads the needed golang version, downloads dependencies, runs unit | |
| # tests, and builds btpeerd. | |
| set -e | |
| SCRIPT_DIR="$(dirname "$(realpath -e "${BASH_SOURCE[0]}")")" | |
| PROJECT_DIR="$(realpath -e "${SCRIPT_DIR}/..")" | |
| PROJECT_GOPATH="${PROJECT_DIR}/go" | |
| PROJECT_EXE_NAME="btpeerd" | |
| PROJECT_EXE_PATH="${PROJECT_DIR}/go/bin/${PROJECT_EXE_NAME}" | |
| GO_VERSION="go1.22.2" | |
| GOBIN="${GOBIN:-"${PROJECT_GOPATH}/bin"}" | |
| GO_CMD="${GOBIN}/${GO_VERSION}" | |
| set -x | |
| # Configure project go version. | |
| if ! command -v "${GO_CMD}"; then | |
| export GOBIN | |
| go install "golang.org/dl/${GO_VERSION}@latest" | |
| "${GO_CMD}" download | |
| fi | |
| # Configure project go environment | |
| export GOPATH="${PROJECT_GOPATH}" | |
| export GO111MODULE=on | |
| # Get packages, format files, run tests, and build executable. | |
| cd "${PROJECT_GOPATH}/src" && "${GO_CMD}" mod tidy | |
| cd "${PROJECT_GOPATH}/src" && "${GO_CMD}" fmt ./... | |
| cd "${PROJECT_GOPATH}/src" && "${GO_CMD}" test ./... | |
| cd "${PROJECT_GOPATH}/src" && "${GO_CMD}" build -o "${PROJECT_EXE_PATH}" |