opensearch-api 0.1.0

High-performance REST API gateway for OpenSearch with security, observability and multi-tenant support
# Makefile para build, test e deploy local
# Compatível com qualquer sistema CI/CD

.PHONY: all test build install deploy clean help

# Variáveis
BINARY_NAME = opensearch-api
VERSION = $(shell grep "^version" Cargo.toml | sed 's/.*"\(.*\)"/\1/')
BUILD_DIR = target/release
INSTALL_DIR = /opt/prod/opensearch-api

help:
	@echo "OpenSearch API - Build System"
	@echo ""
	@echo "Comandos disponíveis:"
	@echo "  make test      - Roda os testes"
	@echo "  make build     - Compila o binário em release"
	@echo "  make install   - Instala usando setup.py"
	@echo "  make deploy    - Deploy completo com setup"
	@echo "  make package   - Cria pacote para distribuição"
	@echo "  make clean     - Limpa arquivos de build"

test:
	@echo "🧪 Rodando testes..."
	cargo test --verbose
	cargo clippy -- -D warnings
	cargo fmt -- --check

build:
	@echo "🔨 Compilando versão $(VERSION)..."
	cargo build --release
	@echo "✅ Build completo: $(BUILD_DIR)/$(BINARY_NAME)"

install: build
	@echo "📦 Instalando OpenSearch API..."
	sudo python3 setup.py --non-interactive --action install --accept-license

deploy: package
	@echo "🚀 Deploy completo..."
	-sudo systemctl stop opensearch-api
	sudo python3 setup.py --non-interactive --action install --accept-license

package: build
	@echo "📦 Criando pacote de distribuição..."
	mkdir -p deploy/prepare
	cp $(BUILD_DIR)/$(BINARY_NAME) deploy/prepare/
	cp README.md deploy/prepare/
	cp LICENSE.md deploy/prepare/
	cp setup.py deploy/prepare/
	echo "$(VERSION)" > deploy/prepare/VERSION
	
	# Cria arquivo .env de exemplo
	@echo "ADDR=127.0.0.1:3000" > deploy/prepare/.env.example
	@echo "OPENSEARCH_URL=http://localhost:9200" >> deploy/prepare/.env.example
	@echo "LOG_LEVEL=info" >> deploy/prepare/.env.example
	
	# Cria o tarball
	cd deploy/prepare && tar -czf ../opensearch-api-$(VERSION).tar.gz .
	@echo "✅ Pacote criado: deploy/opensearch-api-$(VERSION).tar.gz"

clean:
	@echo "🧹 Limpando..."
	cargo clean
	rm -rf deploy/prepare
	rm -f deploy/*.tar.gz

# Comando para CI/CD genérico
ci: test build package
	@echo "✅ CI pipeline completo!"

# Verificação de saúde
health-check:
	@curl -s http://localhost:3000/health | jq '.' || echo "❌ API não está respondendo"

# Backup antes de deploy
backup:
	@echo "💾 Criando backup..."
	sudo python3 setup.py --non-interactive --action backup

# Desenvolvimento local
dev:
	cargo watch -x run

# Análise de segurança
security-check:
	cargo audit
	cargo outdated