.PHONY: all test build install deploy clean help
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
@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
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
ci: test build package
@echo "✅ CI pipeline completo!"
health-check:
@curl -s http://localhost:3000/health | jq '.' || echo "❌ API não está respondendo"
backup:
@echo "💾 Criando backup..."
sudo python3 setup.py --non-interactive --action backup
dev:
cargo watch -x run
security-check:
cargo audit
cargo outdated