104 lines
3.5 KiB
Makefile
104 lines
3.5 KiB
Makefile
default: testacc
|
|
GOOS=$(shell go env GOOS)
|
|
GOARCH=$(shell go env GOARCH)
|
|
INSTALL_PATH=~/.local/share/terraform/plugins/repo.anhonesthost.net/cybercovellc/threshold/0.0.1/linux_$(GOARCH)
|
|
BUILD_ALL_PATH=${PWD}/bin
|
|
|
|
ifeq ($(GOOS), darwin)
|
|
INSTALL_PATH=~/Library/Application\ Support/io.terraform/plugins/repo.anhonesthost.net/cybercovellc/threshold/0.0.1/darwin_$(GOARCH)
|
|
endif
|
|
ifeq ($(GOOS), "windows")
|
|
INSTALL_PATH=%APPDATA%/HashiCorp/Terraform/plugins/repo.anhonesthost.net/cybercovellc/threshold/0.0.1/windows_$(GOARCH)
|
|
endif
|
|
|
|
REGISTRY_NAME?=docker.io/hashicorpboundary
|
|
IMAGE_NAME=postgres
|
|
IMAGE_TAG ?= $(REGISTRY_NAME)/$(IMAGE_NAME):11-alpine
|
|
DOCKER_ARGS ?= -d
|
|
PG_OPTS ?=
|
|
TEST_DB_PORT ?= 5432
|
|
BOUNDARY_VERSION = $(shell go mod edit -json | jq -r '.["Require"][] | select(.Path=="github.com/hashicorp/boundary") | .["Version"]')
|
|
GOPATH ?= $(abspath ~/go)
|
|
GOMODCACHE ?= $(GOPATH)/pkg/mod
|
|
|
|
tools:
|
|
go generate -tags tools tools/tools.go
|
|
go install github.com/hashicorp/copywrite@v0.15.0
|
|
|
|
# Unit tests: only the tests that do not need a running Threshold/Boundary
|
|
# controller. Everything else is an acceptance test, run via `make testacc`.
|
|
UNIT_TESTS = ^(TestProvider|TestSetFromVaultCredentialStoreResponseMapReadsWorkerFilterFromAttributes|TestAccTargetWithAddress_HostSourceAndAddressConflict|TestValidateTargetAliasScope|TestAliasSuffixFromScopeResponseMap|TestValidateAliasSuffixScope)$$
|
|
|
|
test:
|
|
go test ./... -count=1 -run '$(UNIT_TESTS)'
|
|
|
|
VERSION ?= $(shell cat version/VERSION)
|
|
|
|
# Cross-compile release binaries for linux/darwin/windows x amd64/arm64 into dist/
|
|
.PHONY: build-all
|
|
build-all:
|
|
./scripts/build-release.sh $(VERSION)
|
|
|
|
# Run acceptance tests
|
|
testacc:
|
|
./test.sh
|
|
|
|
dev:
|
|
GOOS=${GOOS} GOARCH=${GOARCH} ./scripts/plugins.sh
|
|
mkdir -p $(INSTALL_PATH)
|
|
go build -o $(INSTALL_PATH)/terraform-provider-threshold main.go
|
|
|
|
dev-no-plugins:
|
|
mkdir -p $(INSTALL_PATH)
|
|
go build -o $(INSTALL_PATH)/terraform-provider-threshold main.go
|
|
|
|
all:
|
|
mkdir -p $(BUILD_ALL_PATH)
|
|
GOOS=darwin go build -o $(BUILD_ALL_PATH)/terraform-provider-threshold_darwin-amd64 main.go
|
|
GOOS=windows go build -o $(BUILD_ALL_PATH)/terraform-provider-threshold_windows-amd64 main.go
|
|
GOOS=linux go build -o $(BUILD_ALL_PATH)/terraform-provider-threshold_linux-amd64 main.go
|
|
|
|
docs:
|
|
go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
|
|
|
|
rm-id-flag-from-docs:
|
|
find docs/ -name "*.md" -type f | xargs sed -i -e '/- \*\*id\*\*/d'
|
|
|
|
test-database-up:
|
|
@echo "Using image: $(IMAGE_TAG)"
|
|
@echo "Additional postgres configuration: $(PG_OPTS)"
|
|
@echo "Using volume: $(GOMODCACHE)/github.com/hashicorp/boundary@$(BOUNDARY_VERSION)/internal/db/schema/migrations:/migrations"
|
|
@docker run \
|
|
$(DOCKER_ARGS) \
|
|
--name boundary-sql-tests \
|
|
-p $(TEST_DB_PORT):5432 \
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
-e POSTGRES_USER=boundary \
|
|
-e POSTGRES_DB=boundary \
|
|
-e PGDATA=/pgdata \
|
|
--mount type=tmpfs,destination=/pgdata \
|
|
-v "$(GOMODCACHE)/github.com/hashicorp/boundary@$(BOUNDARY_VERSION)/internal/db/schema/migrations":/migrations \
|
|
$(IMAGE_TAG) \
|
|
-c 'config_file=/etc/postgresql/postgresql.conf' \
|
|
$(PG_OPTS) 1> /dev/null
|
|
@echo "Test database available at: 127.0.0.1:$(TEST_DB_PORT)"
|
|
@echo "For database logs run:"
|
|
@echo " docker logs boundary-sql-tests"
|
|
|
|
test-database-down:
|
|
docker stop boundary-sql-tests || true
|
|
docker rm -v boundary-sql-tests || true
|
|
|
|
.PHONY: testacc tools docs test-database-up test-database-down
|
|
|
|
.PHONY: copywrite
|
|
copywrite:
|
|
copywrite headers
|
|
|
|
.PHONY: fmt
|
|
fmt:
|
|
gofumpt -w $$(find . -name '*.go')
|
|
|
|
.PHONY: gen
|
|
gen: docs copywrite fmt
|