This PR adds a Swarm development environment which can be run in a Docker container and provides scripts for building binaries and running Swarm clusters.
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| #
 | |
| # A script to build and run the Swarm development environment using Docker.
 | |
| 
 | |
| set -e
 | |
| 
 | |
| ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
 | |
| 
 | |
| # DEFAULT_NAME is the default name for the Docker image and container
 | |
| DEFAULT_NAME="swarm-dev"
 | |
| 
 | |
| usage() {
 | |
|   cat >&2 <<USAGE
 | |
| usage: $0 [options]
 | |
| 
 | |
| Build and run the Swarm development environment.
 | |
| 
 | |
| Depends on Docker being installed locally.
 | |
| 
 | |
| OPTIONS:
 | |
|   -n, --name NAME          Docker image and container name [default: ${DEFAULT_NAME}]
 | |
|   -d, --docker-args ARGS   Custom args to pass to 'docker run' (e.g. '-p 8000:8000' to expose a port)
 | |
|   -h, --help               Show this message
 | |
| USAGE
 | |
| }
 | |
| 
 | |
| main() {
 | |
|   local name="${DEFAULT_NAME}"
 | |
|   local docker_args=""
 | |
|   parse_args "$@"
 | |
|   build_image
 | |
|   run_image
 | |
| }
 | |
| 
 | |
| parse_args() {
 | |
|   while true; do
 | |
|     case "$1" in
 | |
|       -h | --help)
 | |
|         usage
 | |
|         exit 0
 | |
|         ;;
 | |
|       -n | --name)
 | |
|         if [[ -z "$2" ]]; then
 | |
|           echo "ERROR: --name flag requires an argument" >&2
 | |
|           exit 1
 | |
|         fi
 | |
|         name="$2"
 | |
|         shift 2
 | |
|         ;;
 | |
|       -d | --docker-args)
 | |
|         if [[ -z "$2" ]]; then
 | |
|           echo "ERROR: --docker-args flag requires an argument" >&2
 | |
|           exit 1
 | |
|         fi
 | |
|         docker_args="$2"
 | |
|         shift 2
 | |
|         ;;
 | |
|       *)
 | |
|         break
 | |
|         ;;
 | |
|     esac
 | |
|   done
 | |
| 
 | |
|   if [[ $# -ne 0 ]]; then
 | |
|     usage
 | |
|     echo "ERROR: invalid arguments" >&2
 | |
|     exit 1
 | |
|   fi
 | |
| }
 | |
| 
 | |
| build_image() {
 | |
|   docker build --tag "${name}" "${ROOT}/swarm/dev"
 | |
| }
 | |
| 
 | |
| run_image() {
 | |
|   exec docker run \
 | |
|     --privileged \
 | |
|     --interactive \
 | |
|     --tty \
 | |
|     --rm \
 | |
|     --hostname "${name}" \
 | |
|     --name     "${name}" \
 | |
|     --volume   "${ROOT}:/go/src/github.com/ethereum/go-ethereum" \
 | |
|     --volume   "/var/run/docker.sock:/var/run/docker.sock" \
 | |
|     ${docker_args} \
 | |
|     "${name}" \
 | |
|     /bin/bash
 | |
| }
 | |
| 
 | |
| main "$@"
 |