github.com/SmartMeshFoundation/Spectrum@v0.0.0-20220621030607-452a266fee1e/swarm/dev/run.sh (about)

     1  #!/usr/bin/env bash
     2  #
     3  # A script to build and run the Swarm development environment using Docker.
     4  
     5  set -e
     6  
     7  ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
     8  
     9  # DEFAULT_NAME is the default name for the Docker image and container
    10  DEFAULT_NAME="swarm-dev"
    11  
    12  usage() {
    13    cat >&2 <<USAGE
    14  usage: $0 [options]
    15  
    16  Build and run the Swarm development environment.
    17  
    18  Depends on Docker being installed locally.
    19  
    20  OPTIONS:
    21    -n, --name NAME          Docker image and container name [default: ${DEFAULT_NAME}]
    22    -d, --docker-args ARGS   Custom args to pass to 'docker run' (e.g. '-p 8000:8000' to expose a port)
    23    -h, --help               Show this message
    24  USAGE
    25  }
    26  
    27  main() {
    28    local name="${DEFAULT_NAME}"
    29    local docker_args=""
    30    parse_args "$@"
    31    build_image
    32    run_image
    33  }
    34  
    35  parse_args() {
    36    while true; do
    37      case "$1" in
    38        -h | --help)
    39          usage
    40          exit 0
    41          ;;
    42        -n | --name)
    43          if [[ -z "$2" ]]; then
    44            echo "ERROR: --name flag requires an argument" >&2
    45            exit 1
    46          fi
    47          name="$2"
    48          shift 2
    49          ;;
    50        -d | --docker-args)
    51          if [[ -z "$2" ]]; then
    52            echo "ERROR: --docker-args flag requires an argument" >&2
    53            exit 1
    54          fi
    55          docker_args="$2"
    56          shift 2
    57          ;;
    58        *)
    59          break
    60          ;;
    61      esac
    62    done
    63  
    64    if [[ $# -ne 0 ]]; then
    65      usage
    66      echo "ERROR: invalid arguments" >&2
    67      exit 1
    68    fi
    69  }
    70  
    71  build_image() {
    72    docker build --tag "${name}" "${ROOT}/swarm/dev"
    73  }
    74  
    75  run_image() {
    76    exec docker run \
    77      --privileged \
    78      --interactive \
    79      --tty \
    80      --rm \
    81      --hostname "${name}" \
    82      --name     "${name}" \
    83      --volume   "${ROOT}:/go/src/github.com/SmartMeshFoundation/Spectrum" \
    84      --volume   "/var/run/docker.sock:/var/run/docker.sock" \
    85      ${docker_args} \
    86      "${name}" \
    87      /bin/bash
    88  }
    89  
    90  main "$@"