54 lines
1.7 KiB
Makefile
54 lines
1.7 KiB
Makefile
.PHONY: proto run clean setup venv test deps check
|
|
|
|
# Generate Python code from proto files (for the gRPC infrastructure)
|
|
proto:
|
|
python -m grpc_tools.protoc \
|
|
-I./proto \
|
|
--python_out=. \
|
|
--grpc_python_out=. \
|
|
proto/remote_sc.proto
|
|
|
|
# Create virtual environment and install dependencies
|
|
setup: venv
|
|
. venv/bin/activate && pip install -r requirements.txt
|
|
@echo ""
|
|
@echo "Setup complete. Activate the virtual environment with:"
|
|
@echo " source venv/bin/activate"
|
|
|
|
# Create virtual environment
|
|
venv:
|
|
python3 -m venv venv
|
|
|
|
# Run the smart contract
|
|
run:
|
|
python main.py --config config.yaml
|
|
|
|
# Clean generated files
|
|
clean:
|
|
rm -f *_pb2.py *_pb2_grpc.py
|
|
rm -rf __pycache__
|
|
rm -rf venv
|
|
|
|
# Run tests
|
|
test:
|
|
bash -n process.sh
|
|
@echo "Syntax check passed"
|
|
@echo "Running process.sh with sample transaction..."
|
|
echo '{"version":"1","header":{"tag":"test","dc_id":"test-dc","txn_id":"test-txn-123","block_id":"1","txn_type":"test","timestamp":"2024-01-01T00:00:00Z","invoker":"test-user"},"payload":{"action":"test","value":42}}' | \
|
|
bash process.sh "$$(cat /dev/stdin)" 2>/dev/null && echo "Test passed" || echo "Test failed"
|
|
|
|
# Install dependencies (without venv)
|
|
deps:
|
|
pip install -r requirements.txt
|
|
|
|
# Check that required tools are available
|
|
check:
|
|
@command -v python3 >/dev/null 2>&1 || { echo "python3 is required but not installed"; exit 1; }
|
|
@command -v bash >/dev/null 2>&1 || { echo "bash is required but not installed"; exit 1; }
|
|
@command -v jq >/dev/null 2>&1 || { echo "jq is required but not installed"; exit 1; }
|
|
@echo "All required tools are available"
|
|
|
|
# Format process.sh with shfmt (if available)
|
|
format:
|
|
@command -v shfmt >/dev/null 2>&1 && shfmt -w process.sh || echo "shfmt not installed, skipping format"
|