|
| 1 | +define dl_tgz |
| 2 | + @if ! $(1) 2>/dev/null 1>&2; then \ |
| 3 | + [ -d "$(GOBIN)" ] || mkdir "$(GOBIN)"; \ |
| 4 | + if [ ! -f "$(GOBIN)/$(1)" ]; then \ |
| 5 | + echo "Downloading $(GOBIN)/$(1)"; \ |
| 6 | + curl --progress-bar -L $(2) | tar zxf - --wildcards --strip 1 -C $(GOBIN) '*/$(1)'; \ |
| 7 | + chmod +x "$(GOBIN)/$(1)"; \ |
| 8 | + fi; \ |
| 9 | + fi |
| 10 | +endef |
| 11 | + |
| 12 | +define dl_bin |
| 13 | + @if ! $(1) 2>/dev/null 1>&2; then \ |
| 14 | + [ -d "$(GOBIN)" ] || mkdir "$(GOBIN)"; \ |
| 15 | + if [ ! -f "$(GOBIN)/$(1)" ]; then \ |
| 16 | + echo "Downloading $(GOBIN)/$(1)"; \ |
| 17 | + curl --progress-bar -L $(2) --output "$(GOBIN)/$(1)"; \ |
| 18 | + chmod +x "$(GOBIN)/$(1)"; \ |
| 19 | + fi; \ |
| 20 | + fi |
| 21 | +endef |
| 22 | + |
| 23 | +MAKEFILE_PATH := $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) |
| 24 | +GOOS := $(shell uname | tr '[:upper:]' '[:lower:]') |
| 25 | +GOARCH := $(shell go env GOARCH) |
| 26 | +DOCKER_COMPOSE_VERSION := 2.34.0 |
| 27 | +GOLANGCI_VERSION := v2.1.6 |
| 28 | + |
| 29 | +ifeq ($(GOARCH),arm64) |
| 30 | + DOCKER_COMPOSE_DOWNLOAD_URL := "https://github.com/docker/compose/releases/download/v$(DOCKER_COMPOSE_VERSION)/docker-compose-$(GOOS)-aarch64" |
| 31 | + GOLANGCI_DOWNLOAD_URL := "https://github.com/golangci/golangci-lint/releases/download/v$(GOLANGCI_VERSION)/golangci-lint-$(GOLANGCI_VERSION)-$(GOOS)-arm64.tar.gz" |
| 32 | +else ifeq ($(GOARCH),amd64) |
| 33 | + DOCKER_COMPOSE_DOWNLOAD_URL := "https://github.com/docker/compose/releases/download/v$(DOCKER_COMPOSE_VERSION)/docker-compose-$(GOOS)-x86_64" |
| 34 | + GOLANGCI_DOWNLOAD_URL := "https://github.com/golangci/golangci-lint/releases/download/v$(GOLANGCI_VERSION)/golangci-lint-$(GOLANGCI_VERSION)-$(GOOS)-amd64.tar.gz" |
| 35 | +else |
| 36 | + @printf 'Unknown architecture "%s"\n', "$(GOARCH)" |
| 37 | + @exit 69 |
| 38 | +endif |
| 39 | + |
| 40 | + |
| 41 | +ifndef GOBIN |
| 42 | +export GOBIN := $(MAKEFILE_PATH)/bin |
| 43 | +endif |
| 44 | + |
| 45 | +export PATH := $(GOBIN):$(PATH) |
| 46 | + |
| 47 | +COMPOSE := docker-compose -f $(MAKEFILE_PATH)/test/docker-compose.yml |
| 48 | + |
| 49 | +.PHONY: clean |
| 50 | +clean: |
| 51 | + $(MAKE) -C ./shared clean |
| 52 | + $(MAKE) -C ./sdkv1 clean |
| 53 | + $(MAKE) -C ./sdkv2 clean |
| 54 | + |
| 55 | +.PHONY: build |
| 56 | +build: |
| 57 | + $(MAKE) -C ./shared build |
| 58 | + $(MAKE) -C ./sdkv1 build |
| 59 | + $(MAKE) -C ./sdkv2 build |
| 60 | + |
| 61 | +.PHONY: clean-caches |
| 62 | +clean-caches: |
| 63 | + $(MAKE) -C ./shared clean-caches |
| 64 | + $(MAKE) -C ./sdkv1 clean-caches |
| 65 | + $(MAKE) -C ./sdkv2 clean-caches |
| 66 | + |
| 67 | +.PHONY: check |
| 68 | +check: check-golangci |
| 69 | + |
| 70 | +.PHONY: fix |
| 71 | +fix: fix-golangci |
| 72 | + |
| 73 | +.PHONY: check-golangci |
| 74 | +check-golangci: .prepare-golangci |
| 75 | + $(MAKE) -C ./shared check-golangci |
| 76 | + $(MAKE) -C ./sdkv1 check-golangci |
| 77 | + $(MAKE) -C ./sdkv2 check-golangci |
| 78 | + |
| 79 | +.PHONY: fix-golangci |
| 80 | +fix-golangci: .prepare-golangci |
| 81 | + $(MAKE) -C ./shared fix-golangci |
| 82 | + $(MAKE) -C ./sdkv1 fix-golangci |
| 83 | + $(MAKE) -C ./sdkv2 fix-golangci |
| 84 | + |
| 85 | +.PHONY: test |
| 86 | +test: build check test-unit test-integration |
| 87 | + |
| 88 | +.PHONY: test-unit |
| 89 | +test-unit: |
| 90 | + $(MAKE) -C ./shared test-unit |
| 91 | + $(MAKE) -C ./sdkv1 test-unit |
| 92 | + $(MAKE) -C ./sdkv2 test-unit |
| 93 | + |
| 94 | +.PHONY: test-integration |
| 95 | +test-integration: scylla-start |
| 96 | + $(MAKE) -C ./shared test-integration |
| 97 | + $(MAKE) -C ./sdkv1 test-integration |
| 98 | + $(MAKE) -C ./sdkv2 test-integration |
| 99 | + |
| 100 | +.PHONY: .prepare-cert |
| 101 | +.prepare-cert: |
| 102 | + @[ -f "${MAKEFILE_PATH}/test/scylla/db.key" ] || (echo "Prepare certificate" && cd ${MAKEFILE_PATH}/test/scylla/ && openssl req -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -x509 -newkey rsa:4096 -keyout db.key -out db.crt -days 3650 -nodes && chmod 644 db.key) |
| 103 | + |
| 104 | +.PHONY: scylla-start |
| 105 | +scylla-start: .prepare-cert $(GOBIN)/docker-compose |
| 106 | + @sudo sysctl -w fs.aio-max-nr=10485760 |
| 107 | + $(COMPOSE) up -d |
| 108 | + |
| 109 | +.PHONY: scylla-stop |
| 110 | +scylla-stop: $(GOBIN)/docker-compose |
| 111 | + $(COMPOSE) down |
| 112 | + |
| 113 | +.PHONY: scylla-kill |
| 114 | +scylla-kill: $(GOBIN)/docker-compose |
| 115 | + $(COMPOSE) kill |
| 116 | + |
| 117 | +.PHONY: scylla-rm |
| 118 | +scylla-rm: $(GOBIN)/docker-compose |
| 119 | + $(COMPOSE) rm -f |
| 120 | + |
| 121 | +.prepare-golangci: |
| 122 | + @if ! golangci-lint --version 2>/dev/null | grep ${GOLANGCI_VERSION} >/dev/null; then \ |
| 123 | + echo "Installing golangci-ling ${GOLANGCI_VERSION}"; \ |
| 124 | + go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${GOLANGCI_VERSION}; \ |
| 125 | + fi |
| 126 | + |
| 127 | +$(GOBIN)/docker-compose: Makefile |
| 128 | + $(call dl_bin,docker-compose,$(DOCKER_COMPOSE_DOWNLOAD_URL)) |
0 commit comments