This commit is contained in:
Michael McGuinness
2024-12-19 11:38:57 +00:00
parent 358341e89b
commit a8493b3e93
17 changed files with 556 additions and 554 deletions
+70 -70
View File
@@ -1,71 +1,71 @@
# https://taskfile.dev
version: '3'
includes:
deps:
taskfile: dependencies.yml
test:
taskfile: tests.yml
docker:
taskfile: docker.yml
proto:
taskfile: proto.yml
compose:
taskfile: compose.yml
db:
taskfile: database.yml
vars:
CONTEXT: ..
OUT_DIR: out
OUT_FILE: "{{.OUT_DIR}}/main_grpc"
tasks:
generate:
deps:
- db:generate
- proto:generate
dev:
deps:
- generate
cmds:
- go run {{.PROJECT_MAIN}}
build:
deps:
- generate
cmds:
- go build -o {{.OUT_FILE}} {{.PROJECT_MAIN}}
start:
deps:
- build
cmds:
- ./{{.OUT_FILE}}
lint:
cmds:
- task proto:lint
- task code:lint
- task db:lint
- task yaml:lint
- task docker:lint
- task compose:lint
- task shell:lint
lint:fix:
cmds:
- task proto:lint:fix
- task code:lint:fix
code:lint:
cmds:
- golangci-lint run
code:lint:fix:
cmds:
- gofmt -w .
yaml:lint:
cmds:
- yamllint . -s
shell:lint:
cmds:
- shellcheck --shell=sh scripts/install-deps.sh
docs:
cmds:
# https://taskfile.dev
version: '3'
includes:
deps:
taskfile: dependencies.yml
test:
taskfile: tests.yml
docker:
taskfile: docker.yml
proto:
taskfile: proto.yml
compose:
taskfile: compose.yml
db:
taskfile: database.yml
vars:
CONTEXT: ..
OUT_DIR: out
OUT_FILE: "{{.OUT_DIR}}/main_grpc"
tasks:
generate:
deps:
- db:generate
- proto:generate
dev:
deps:
- generate
cmds:
- go run {{.PROJECT_MAIN}}
build:
deps:
- generate
cmds:
- go build -o {{.OUT_FILE}} {{.PROJECT_MAIN}}
start:
deps:
- build
cmds:
- ./{{.OUT_FILE}}
lint:
cmds:
- task proto:lint
- task code:lint
- task db:lint
- task yaml:lint
- task docker:lint
- task compose:lint
- task shell:lint
lint:fix:
cmds:
- task proto:lint:fix
- task code:lint:fix
code:lint:
cmds:
- golangci-lint run
code:lint:fix:
cmds:
- gofmt -w .
yaml:lint:
cmds:
- yamllint . -s
shell:lint:
cmds:
- shellcheck --shell=sh scripts/install-deps.sh
docs:
cmds:
- godoc -http=:6060
+16 -16
View File
@@ -1,17 +1,17 @@
# https://taskfile.dev
version: '3'
vars:
COMPOSE_FILE_WITH_CONTEXT: "{{.CONTEXT}}/{{.COMPOSE_FILE}}"
tasks:
build:
cmds:
- docker compose -f {{.COMPOSE_FILE_WITH_CONTEXT}} build
up:
cmds:
- docker compose -f {{.COMPOSE_FILE_WITH_CONTEXT}} up
lint:
cmds:
# https://taskfile.dev
version: '3'
vars:
COMPOSE_FILE_WITH_CONTEXT: "{{.CONTEXT}}/{{.COMPOSE_FILE}}"
tasks:
build:
cmds:
- docker compose -f {{.COMPOSE_FILE_WITH_CONTEXT}} build
up:
cmds:
- docker compose -f {{.COMPOSE_FILE_WITH_CONTEXT}} up
lint:
cmds:
- docker compose -f {{.COMPOSE_FILE_WITH_CONTEXT}} config
+23 -23
View File
@@ -1,24 +1,24 @@
# https://taskfile.dev
version: '3'
tasks:
install:
cmds:
- go install golang.org/x/tools/cmd/godoc@latest
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
- go install github.com/yoheimuta/protolint/cmd/protolint@latest
- go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- go install github.com/zabio3/godolint@latest
- go install github.com/wasilibs/go-yamllint/cmd/yamllint@latest
- go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
- go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
- go install github.com/vektra/mockery/v2@latest
- curl -sfL https://direnv.net/install.sh | bash
- direnv allow
- go mod download
tidy:
cmds:
- go mod tidy
# https://taskfile.dev
version: '3'
tasks:
install:
cmds:
- go install golang.org/x/tools/cmd/godoc@latest
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
- go install github.com/yoheimuta/protolint/cmd/protolint@latest
- go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- go install github.com/zabio3/godolint@latest
- go install github.com/wasilibs/go-yamllint/cmd/yamllint@latest
- go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
- go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
- go install github.com/vektra/mockery/v2@latest
- curl -sfL https://direnv.net/install.sh | bash
- direnv allow
- go mod download
tidy:
cmds:
- go mod tidy
- go mod vendor
+15 -15
View File
@@ -1,16 +1,16 @@
# https://taskfile.dev
version: '3'
vars:
DOCKERFILE_DIR_WITH_CONTEXT: "{{.CONTEXT}}/{{.DOCKERFILE_DIR}}"
tasks:
lint:
cmds:
- godolint {{.DOCKERFILE_DIR_WITH_CONTEXT}}/grpc/Dockerfile
- godolint {{.DOCKERFILE_DIR_WITH_CONTEXT}}/queue/Dockerfile
build:
cmds:
- docker build -t {{.IMAGE_NAME}}_grpc -f {{.DOCKERFILE_DIR_WITH_CONTEXT}}/grpc/Dockerfile {{.CONTEXT}}
# https://taskfile.dev
version: '3'
vars:
DOCKERFILE_DIR_WITH_CONTEXT: "{{.CONTEXT}}/{{.DOCKERFILE_DIR}}"
tasks:
lint:
cmds:
- godolint {{.DOCKERFILE_DIR_WITH_CONTEXT}}/grpc/Dockerfile
- godolint {{.DOCKERFILE_DIR_WITH_CONTEXT}}/queue/Dockerfile
build:
cmds:
- docker build -t {{.IMAGE_NAME}}_grpc -f {{.DOCKERFILE_DIR_WITH_CONTEXT}}/grpc/Dockerfile {{.CONTEXT}}
- docker build -t {{.IMAGE_NAME}}_queue -f {{.DOCKERFILE_DIR_WITH_CONTEXT}}/queue/Dockerfile {{.CONTEXT}}
+6 -6
View File
@@ -1,7 +1,7 @@
#!/bin/sh
# Install Taskfile
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/binintegration
# Install dependencies
#!/bin/sh
# Install Taskfile
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/binintegration
# Install dependencies
task deps:install
+16 -16
View File
@@ -1,17 +1,17 @@
# https://taskfile.dev
version: '3'
vars:
PROTO_DIR_WITH_CONTEXT: "{{.CONTEXT}}/{{.PROTOBUF_DIR}}"
tasks:
lint:
cmds:
- protolint lint {{.PROTO_DIR_WITH_CONTEXT}}
lint:fix:
cmds:
- protolint lint -fix {{.PROTO_DIR_WITH_CONTEXT}}
generate:
cmds:
# https://taskfile.dev
version: '3'
vars:
PROTO_DIR_WITH_CONTEXT: "{{.CONTEXT}}/{{.PROTOBUF_DIR}}"
tasks:
lint:
cmds:
- protolint lint {{.PROTO_DIR_WITH_CONTEXT}}
lint:fix:
cmds:
- protolint lint -fix {{.PROTO_DIR_WITH_CONTEXT}}
generate:
cmds:
- protoc --proto_path={{.PROTO_DIR_WITH_CONTEXT}} --go_out={{.CONTEXT}}/{{.API_GRPC_DIR}}/spec --go-grpc_out={{.CONTEXT}}/{{.API_GRPC_DIR}} --go_opt=paths=source_relative main.proto
+45 -45
View File
@@ -1,46 +1,46 @@
# https://taskfile.dev
version: '3'
includes:
docker:
taskfile: docker.yml
internal: true
vars:
COVERAGE_FILE_WITH_CONTEXT: "{{.CONTEXT}}/{{.OUT_DIR}}/{{.COVERAGE_FILE}}"
tasks:
unit:
cmds:
- mkdir -p {{.CONTEXT}}/{{.OUT_DIR}}
- go test {{.CONTEXT}}/test/unit/... -coverpkg={{.CONTEXT}}/internal/...,{{.CONTEXT}}/pkg/... -coverprofile={{.COVERAGE_FILE_WITH_CONTEXT}}
unit:coverage:
deps:
- unit
vars:
TMP_FILE: "{{.CONTEXT}}/{{.OUT_DIR}}/coverage.tmp"
cmds:
- go tool cover -func={{.COVERAGE_FILE_WITH_CONTEXT}} > {{.TMP_FILE}}
- cat {{.TMP_FILE}}
- |
COVERAGE=$(grep total: {{.TMP_FILE}} | awk '{print $3}' | sed 's/%//' | bc)
echo ""
echo "Coverage Threshold: {{.COVERAGE_THRESHOLD}}%"
echo "Total Coverage: $COVERAGE%"
if (( $(echo "$COVERAGE < {{.COVERAGE_THRESHOLD}}" | bc -l) )); then
echo "Total Coverage below Coverage Threshold"
exit 1
fi
silent: true
integration:
cmds:
- go test -v {{.CONTEXT}}/test/integration/...
integration:nocache:
cmds:
- go test -count=1 -v {{.CONTEXT}}/test/integration/...
integration:build:
deps:
- docker:build
cmds:
# https://taskfile.dev
version: '3'
includes:
docker:
taskfile: docker.yml
internal: true
vars:
COVERAGE_FILE_WITH_CONTEXT: "{{.CONTEXT}}/{{.OUT_DIR}}/{{.COVERAGE_FILE}}"
tasks:
unit:
cmds:
- mkdir -p {{.CONTEXT}}/{{.OUT_DIR}}
- go test {{.CONTEXT}}/test/unit/... -coverpkg={{.CONTEXT}}/internal/...,{{.CONTEXT}}/pkg/... -coverprofile={{.COVERAGE_FILE_WITH_CONTEXT}}
unit:coverage:
deps:
- unit
vars:
TMP_FILE: "{{.CONTEXT}}/{{.OUT_DIR}}/coverage.tmp"
cmds:
- go tool cover -func={{.COVERAGE_FILE_WITH_CONTEXT}} > {{.TMP_FILE}}
- cat {{.TMP_FILE}}
- |
COVERAGE=$(grep total: {{.TMP_FILE}} | awk '{print $3}' | sed 's/%//' | bc)
echo ""
echo "Coverage Threshold: {{.COVERAGE_THRESHOLD}}%"
echo "Total Coverage: $COVERAGE%"
if (( $(echo "$COVERAGE < {{.COVERAGE_THRESHOLD}}" | bc -l) )); then
echo "Total Coverage below Coverage Threshold"
exit 1
fi
silent: true
integration:
cmds:
- go test -v {{.CONTEXT}}/test/integration/...
integration:nocache:
cmds:
- go test -count=1 -v {{.CONTEXT}}/test/integration/...
integration:build:
deps:
- docker:build
cmds:
- task test:integration