diff --git a/.gitea/workflows/validate.yaml b/.gitea/workflows/validate.yaml new file mode 100644 index 0000000..5c8e50b --- /dev/null +++ b/.gitea/workflows/validate.yaml @@ -0,0 +1,40 @@ +name: Validate the build +run-name: ${{ gitea.actor }} is validating +on: [push] + +jobs: + validate-build: + runs-on: ubuntu-latest + container: + image: node:current-alpine + steps: + - name: Install dependencies + run: | + echo "https://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories + echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories + apk update + apk add --no-cache git make bash go + + GOBIN=/usr/local/bin go install mvdan.cc/gofumpt@latest + + export "PATH=$PATH:/root/go/bin" + + echo "---------------------" + echo "Go version:" + go version + echo "---------------------" + + - name: Check out repository code + uses: actions/checkout@v4 + + - name: Fetch dependencies + run: | + go mod download + + - name: Validate the code and formatting + run: | + make validate + + - name: Run tests + run: | + make test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..71f7553 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/reports +/bin diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c9acfb4 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +BINARY_DIR = bin +BINARIES = $(patsubst cmd/%/,%,$(wildcard cmd/*/)) + +.PHONY: all build test coverage validate clean purge $(BINARIES) + +all: build + + +build: $(BINARIES) + + +$(BINARY_DIR): + mkdir -p $(BINARY_DIR) + +$(BINARIES): %: $(BINARY_DIR) + go build -o $(BINARY_DIR)/$@ ./cmd/$@/ + +test: + go test ./... -cover + +coverage: + mkdir -p reports/ + go test -coverprofile=reports/coverage.out ./... && go tool cover -html=reports/coverage.out + +validate: + @test -z "$(shell gofumpt -l .)" && echo "No files need formatting" || (echo "Incorrect formatting in:"; gofumpt -l .; exit 1) + go vet ./... + +clean: + rm -rf $(BINARY_DIR) + go clean + +purge: clean + rm -rf reports