| #!/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}" |