#!/usr/bin/env bash # Usage: # # run-tests.sh [--scenario|-s ] container # # Start container and start a shell session with helper commands # for accessing the container. # A short command documentation is printed at the start of the session. # The container is destroyed after exiting the shell. # An existing container is destroyed before starting. # # Supported arguments: # # --destroy|-d to destroy # # When `run-tests.sh container` from inside an existing shell session, # the current container is updated without restarting by switching # its NixOS configuration. # Use this arg to destroy and restart the container instead. # # --no-destroy|-n # # By default, all commands destroy an existing container before starting and, # when appropriate, before exiting. # This ensures that containers start with no leftover filesystem state from # previous runs and that containers don't consume system resources after use. # This args disables auto-destructing containers. # # # run-tests.sh container --run c systemctl status bitcoind # # Run a command in the shell session environmentand exit. # Destroy the container afterwards. # All arguments following `--run` are used as a command. # Supports argument '--no-destroy|-n' (see above for an explanation). # # Example: Start shell inside container # run-tests.sh container --run c # # # run-tests.sh [--scenario|-s ] container --command|-c # # Provide a custom extra-container command. # # Example: # run-tests.sh container --command create -s # Create and start a container without a shell. # # # All extra args are passed to extra-container (unless --command is used): # run-tests.sh container --build-args --builders 'ssh://worker - - 8' set -euo pipefail # These vars are set by ../run-tests.sh : "${container:=}" : "${scriptDir:=}" containerCommand=shell while [[ $# -gt 0 ]]; do case $1 in --command|-c) shift containerCommand=$1 shift ;; *) break esac done . "${BASH_SOURCE[0]%/*}"/extra-container-check-version.sh exec "$container"/bin/container "$containerCommand" "$@"