version: '3' vars: SERVER: bl@flo-homeserver PKG: main BINARY_DIR: ./bin DEV_BINARY_DIR: ./local BINARY_API: "{{.BINARY_DIR}}/go-api" DEV_BINARY_API: "{{.DEV_BINARY_DIR}}/go-api/" tasks: # ── Build ────────────────────────────────────────────────────────────────── build: desc: runs vet, fmt, and build api deps: [vet, fmt, build-api] build-api: desc: clean, then build api bin cmds: - go tool task clean-api - mkdir -p {{.BINARY_DIR}} - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o {{.BINARY_API}} ./cmd/api deploy: desc: build api, stage files, and deploy api to remote server deps: [build] cmds: - ssh {{.SERVER}} "rm -rf /tmp/go-api-deploy && mkdir -p /tmp/go-api-deploy" - rsync -avz --delete {{.BINARY_API}} {{.SERVER}}:/tmp/go-api-deploy/ - ssh -t {{.SERVER}} "sudo rsync -a --delete --exclude='.env' --exclude='config.json' --exclude='data/' --chown=go-api:go-api /tmp/go-api-deploy/ /opt/go-api/ && sudo systemctl restart go-api" - ssh {{.SERVER}} "rm -rf /tmp/go-api-deploy" dev-build: desc: runs DEV for vet, fmt, and build DEV api deps: [vet, fmt, dev-build-api] dev-build-api: desc: clean, then build DEV api bin cmds: - go tool task dev-clean-api - mkdir -p {{.DEV_BINARY_API}} - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o {{.DEV_BINARY_API}}/go-api ./cmd/api dev-start-api: desc: build api, create dirs, and start DEV api binary dir: "{{ .DEV_BINARY_API }}" cmds: - "rm -rf *" - go tool task dev-build-api - "./go-api" run: desc: run the POC API locally on :8080 by default cmds: - go run ./cmd/api vet: cmds: - go vet ./... fmt: cmds: - go fmt ./... test: cmds: - go test ./... clean: deps: [clean-api] clean-api: cmds: - rm -f {{.BINARY_API}} dev-clean-api: cmds: - rm -f {{.DEV_BINARY_API}}/go-api