Initial commit: smart contract templates for bash, go, python, and typescript
This commit is contained in:
53
bash/Makefile
Normal file
53
bash/Makefile
Normal file
@@ -0,0 +1,53 @@
|
||||
.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"
|
||||
Reference in New Issue
Block a user