almost empty
This commit is contained in:
121
Makefile
Normal file
121
Makefile
Normal file
@@ -0,0 +1,121 @@
|
||||
# Formae Plugin Makefile
|
||||
#
|
||||
# Targets:
|
||||
# build - Build the plugin binary
|
||||
# test - Run tests
|
||||
# lint - Run linter
|
||||
# clean - Remove build artifacts
|
||||
# install - Build and install plugin locally (binary + schema + manifest)
|
||||
|
||||
# Plugin metadata - extracted from formae-plugin.pkl
|
||||
PLUGIN_NAME := $(shell pkl eval -x 'name' formae-plugin.pkl 2>/dev/null || echo "example")
|
||||
PLUGIN_VERSION := $(shell pkl eval -x 'version' formae-plugin.pkl 2>/dev/null || echo "0.0.0")
|
||||
PLUGIN_NAMESPACE := $(shell pkl eval -x 'namespace' formae-plugin.pkl 2>/dev/null || echo "EXAMPLE")
|
||||
|
||||
# Build settings
|
||||
GO := go
|
||||
GOFLAGS := -trimpath
|
||||
BINARY := $(PLUGIN_NAME)
|
||||
|
||||
# Installation paths
|
||||
# Plugin discovery expects lowercase directory names matching the plugin name
|
||||
PLUGIN_BASE_DIR := $(HOME)/.pel/formae/plugins
|
||||
INSTALL_DIR := $(PLUGIN_BASE_DIR)/$(PLUGIN_NAME)/v$(PLUGIN_VERSION)
|
||||
|
||||
.PHONY: all build test test-unit test-integration lint verify-schema clean install help clean-environment conformance-test conformance-test-crud conformance-test-discovery
|
||||
|
||||
all: build
|
||||
|
||||
## build: Build the plugin binary
|
||||
build:
|
||||
$(GO) build $(GOFLAGS) -o bin/$(BINARY) .
|
||||
|
||||
## test: Run all tests
|
||||
test:
|
||||
$(GO) test -v ./...
|
||||
|
||||
## test-unit: Run unit tests only (tests with //go:build unit tag)
|
||||
test-unit:
|
||||
$(GO) test -v -tags=unit ./...
|
||||
|
||||
## test-integration: Run integration tests (requires cloud credentials)
|
||||
## Add tests with //go:build integration tag
|
||||
test-integration:
|
||||
$(GO) test -v -tags=integration ./...
|
||||
|
||||
## lint: Run golangci-lint
|
||||
lint:
|
||||
golangci-lint run
|
||||
|
||||
## verify-schema: Validate PKL schema files
|
||||
## Checks that schema files are well-formed and follow formae conventions.
|
||||
verify-schema:
|
||||
$(GO) run github.com/platform-engineering-labs/formae/pkg/plugin/testutil/cmd/verify-schema --namespace $(PLUGIN_NAMESPACE) ./schema/pkl
|
||||
|
||||
## clean: Remove build artifacts
|
||||
clean:
|
||||
rm -rf bin/ dist/
|
||||
|
||||
## install: Build and install plugin locally (binary + schema + manifest)
|
||||
## Installs to ~/.pel/formae/plugins/<name>/v<version>/
|
||||
## Removes any existing versions of the plugin first to ensure clean state.
|
||||
install: build
|
||||
@echo "Installing $(PLUGIN_NAME) v$(PLUGIN_VERSION) (namespace: $(PLUGIN_NAMESPACE))..."
|
||||
@rm -rf $(PLUGIN_BASE_DIR)/$(PLUGIN_NAME)
|
||||
@mkdir -p $(INSTALL_DIR)/schema/pkl
|
||||
@cp bin/$(BINARY) $(INSTALL_DIR)/$(BINARY)
|
||||
@cp -r schema/pkl/* $(INSTALL_DIR)/schema/pkl/
|
||||
@cp formae-plugin.pkl $(INSTALL_DIR)/
|
||||
@echo "Installed to $(INSTALL_DIR)"
|
||||
@echo " - Binary: $(INSTALL_DIR)/$(BINARY)"
|
||||
@echo " - Schema: $(INSTALL_DIR)/schema/pkl/"
|
||||
@echo " - Manifest: $(INSTALL_DIR)/formae-plugin.pkl"
|
||||
|
||||
## help: Show this help message
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## / /'
|
||||
|
||||
## clean-environment: Clean up test resources in cloud environment
|
||||
## Called before and after conformance tests. Edit scripts/ci/clean-environment.sh
|
||||
## to configure for your provider.
|
||||
clean-environment:
|
||||
@./scripts/ci/clean-environment.sh
|
||||
|
||||
## conformance-test: Run all conformance tests (CRUD + discovery)
|
||||
## Usage: make conformance-test [VERSION=0.80.0] [TEST=s3-bucket]
|
||||
## Downloads the specified formae version (or latest) and runs conformance tests.
|
||||
## Calls clean-environment before and after tests.
|
||||
##
|
||||
## Parameters:
|
||||
## VERSION - Formae version to test against (default: latest)
|
||||
## TEST - Filter tests by name pattern (e.g., TEST=s3-bucket)
|
||||
conformance-test: conformance-test-crud conformance-test-discovery
|
||||
|
||||
## conformance-test-crud: Run only CRUD lifecycle tests
|
||||
## Usage: make conformance-test-crud [VERSION=0.80.0] [TEST=s3-bucket]
|
||||
conformance-test-crud: install
|
||||
@echo "Pre-test cleanup..."
|
||||
@./scripts/ci/clean-environment.sh || true
|
||||
@echo ""
|
||||
@echo "Running CRUD conformance tests..."
|
||||
@FORMAE_TEST_FILTER="$(TEST)" FORMAE_TEST_TYPE=crud ./scripts/run-conformance-tests.sh $(VERSION); \
|
||||
TEST_EXIT=$$?; \
|
||||
echo ""; \
|
||||
echo "Post-test cleanup..."; \
|
||||
./scripts/ci/clean-environment.sh || true; \
|
||||
exit $$TEST_EXIT
|
||||
|
||||
## conformance-test-discovery: Run only discovery tests
|
||||
## Usage: make conformance-test-discovery [VERSION=0.80.0] [TEST=s3-bucket]
|
||||
conformance-test-discovery: install
|
||||
@echo "Pre-test cleanup..."
|
||||
@./scripts/ci/clean-environment.sh || true
|
||||
@echo ""
|
||||
@echo "Running discovery conformance tests..."
|
||||
@FORMAE_TEST_FILTER="$(TEST)" FORMAE_TEST_TYPE=discovery ./scripts/run-conformance-tests.sh $(VERSION); \
|
||||
TEST_EXIT=$$?; \
|
||||
echo ""; \
|
||||
echo "Post-test cleanup..."; \
|
||||
./scripts/ci/clean-environment.sh || true; \
|
||||
exit $$TEST_EXIT
|
||||
Reference in New Issue
Block a user