Files
database-gateway/Taskfile.yml
Kirill Zhuravlev 6b1ece2bfa ++
2025-04-15 00:50:12 +02:00

151 lines
3.9 KiB
YAML

# Database Gateway provides access to servers with ACL for safe and restricted database interactions.
# Copyright (C) 2024 Kirill Zhuravlev
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
version: "3"
vars:
PROJECT_NAME: database-gateway
DEPS_COMPOSE_FILE: ./.cicd/local/docker-compose.yaml
DOCKER_IMAGE_NAME: database-gateway
GO_ENTRYPOINT: ./cmd/gateway
GIT_TAG:
sh: "gt t l -f tag"
tasks:
run:
cmds:
- go run {{ .GO_ENTRYPOINT }} run
deps:run:
desc: Run all deps
cmds:
- docker compose -p {{ .PROJECT_NAME }} -f {{ .DEPS_COMPOSE_FILE }} up -d
deps:logs:
desc: Show all deps logs
cmds:
- docker compose -p {{ .PROJECT_NAME }} -f {{ .DEPS_COMPOSE_FILE }} logs -f
deps:stop:
desc: Stop all deps
cmds:
- docker compose -p {{ .PROJECT_NAME }} -f {{ .DEPS_COMPOSE_FILE }} stop
deps:drop:
desc: Stop all deps, remove volumes and other resources
cmds:
- docker compose -p {{ .PROJECT_NAME }} -f {{ .DEPS_COMPOSE_FILE }} down -v -t 0
- docker volume list | grep {{ .PROJECT_NAME }} | awk '{print $2}' | xargs docker volume rm $1
tools:install:
cmds:
- echo '>>> Run install tools'
- toolset sync
lint:
desc: Run static analysis
cmds:
- echo '>>> Run lint'
- toolset run golangci-lint run
fmt:
desc: Safe formatting codebase
cmds:
- echo ">>> Run Code Formatter"
- go fmt $(go list ./...)
- toolset run gofumpt -l -w .
- toolset run goimports -d -w $(find . -type f -name '*.go' -not -path './.cicd/*')
migrations:new:
desc: Create new migration
cmds:
- go run {{ .GO_ENTRYPOINT }} migrate-new
migrations:up:
desc: Up all migrations
cmds:
- go run {{ .GO_ENTRYPOINT }} migrate-up
ci:lint:
desc: Run linter in CI tool
cmds:
- task: tools:install
- echo ">>> Run lint"
- toolset run golangci-lint run
generate:
desc: Generate code
cmds:
- task: "generate:go"
- task: "generate:tailwind"
- task: "generate:templ"
- task: "generate:jet"
- task: "generate:license"
- task: "fmt"
generate:jet:
desc: Generate jet models
cmds:
- echo ">>> Jet generate"
- go run {{ .GO_ENTRYPOINT }} jet-generate
- rm -rf ./internal/storage/jetgen/{table,model}
- mv ./internal/storage/jetgen/local__dbgw/public/* ./internal/storage/jetgen/
- rm -rf ./internal/storage/jetgen/local__dbgw
generate:license:
cmds:
- toolset run addlicense -f LICENSE_gplv3_header.txt .
generate:tailwind:
dir: './internal/facade'
cmds:
- npx tailwindcss -i ./static/input.css -o ./static/output.css
generate:go:
desc: Generate go
cmds:
- echo ">>> Go generate ./..."
- go generate ./...
generate:templ:
desc: Generate templ
dir: './internal/facade/templates'
cmds:
- echo ">>> Templ"
- toolset run templ generate
check:
desc: Run all project checks
cmds:
- task: "tools:install"
- task: "generate"
- task: "fmt"
- task: "lint"
- task: "test"
test:
cmds:
- go test ./...
docker:build:
cmds:
- echo ">>> Docker build"
- |
docker buildx build \
--platform linux/amd64 \
-t {{ .DOCKER_IMAGE_NAME }}:{{.GIT_TAG}} \
-f Dockerfile .