Files
gitbump/justfile
Ondrej Belusky 4f46101d4c
Some checks failed
Gitbump CI / test (push) Failing after 51s
Gitbump CI / build (push) Successful in 10s
Gitbump CI / notify-failure (push) Has been skipped
move to gitea actions
2026-02-12 12:52:34 +01:00

120 lines
2.9 KiB
Makefile

set fallback
default:
just --choose
list:
just --list
import? 'justfile.custom'
# Variables with defaults
CGO_ENABLED := env_var_or_default('CGO_ENABLED', '0')
GO111MODULE := env_var_or_default('GO111MODULE', 'on')
GOFLAGS := env_var_or_default('GOFLAGS', '"-mod=mod"')
SUFFIX := env_var_or_default('SUFFIX', '')
# Determine project name
NAME := if env_var_or_default('GITEA_REPO_NAME', '') != '' {
env_var('GITEA_REPO_NAME')
} else {
file_name(justfile_directory())
}
OUTBIN := env_var_or_default('OUTBIN', NAME)
# Build metadata
VERSION := env_var_or_default('VERSION', `git describe --tags --always --dirty 2> /dev/null || echo dev`)
BUILD_TIME := env_var_or_default('BUILD_TIME', `/bin/date +%FT%T%z`)
PKG := `GOWORK=off go list -m`
LD_FLAGS_OPTIMIZE := env_var_or_default('LD_FLAGS_OPTIMIZE', '-s -w')
LD_FLAGS := '"-X main.Version=' + VERSION + ' -X main.BuildTime=' + BUILD_TIME + ' ' + LD_FLAGS_OPTIMIZE + '"'
GO_OPTS := env_var_or_default('GO_OPTS', '-trimpath')
OPTIMIZE := env_var_or_default('OPTIMIZE', 'false')
# Display version information
version:
@echo {{NAME}} {{VERSION}} {{BUILD_TIME}} {{PKG}} {{LD_FLAGS}}
# Build for all platforms
all-build: build-linux-amd64 build-linux-arm64 build-linux-386
# Download dependencies
download:
@echo Download go.mod dependencies
go mod download
# Generate code
generate:
GOWORK=off go generate -mod=mod ./...
# Run wire dependency injection
wire:
go generate -x ./di
# Build for specific platform
build GOOS GOARCH:
GOOS={{GOOS}} GOARCH={{GOARCH}} CGO_ENABLED={{CGO_ENABLED}} go build \
-ldflags {{LD_FLAGS}} {{GO_OPTS}} \
-mod mod \
-o bin/{{OUTBIN}}{{SUFFIX}}_{{GOOS}}_{{GOARCH}} \
./main.go
build-race:
GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -race \
-ldflags {{LD_FLAGS}} {{GO_OPTS}} \
-mod mod \
-o bin/{{OUTBIN}}{{SUFFIX}}_linux_amd64 \
./main.go
# Install binaries
install:
CGO_ENABLED={{CGO_ENABLED}} go install \
-ldflags {{LD_FLAGS}} \
./...
# Build for Linux ARM64
build-linux-arm64: (build "linux" "arm64")
# Build for Linux AMD64
build-linux-amd64: (build "linux" "amd64")
# Build for Linux 386
build-linux-386: (build "linux" "386")
# Pre-push checks
prepush: generate vet fmt tidy test
# Run tests
test:
CGO_ENABLED=0 go build -mod=mod ./...
CGO_ENABLED=1 go test -race -cover -v -mod=mod ./... && echo -e "\033[32mSUCCESS\033[0m" || (echo -e "\033[31mFAILED\033[0m" && exit 1)
# Run benchmarks
bench:
go test -test.timeout=30m -benchmem -run ^$$ -benchtime=20s -bench . ./... && echo -e "\033[32mSUCCESS\033[0m" || (echo -e "\033[31mFAILED\033[0m" && exit 1)
# Run go vet
vet:
go vet ./...
# Format code
fmt:
go fmt ./...
# Tidy dependencies
tidy:
go mod tidy
verify:
go mod verify
# List all modules
go_list:
go list -u -m all
# Update all dependencies
go_update_all:
go get -t -u ./...