move to gitea actions
This commit is contained in:
119
justfile
Normal file
119
justfile
Normal file
@@ -0,0 +1,119 @@
|
||||
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 ./...
|
||||
|
||||
Reference in New Issue
Block a user