1#!/usr/bin/env bash
2#
3# Shared cleanup routines between different steps
4#
5# Please source .ci/functions/imports.sh as a whole not just this file
6#
7# Version 1.0.0
8# - Initial version after refactor
9
10function cleanup_volume {
11  if [[ "$(docker volume ls -q -f name=$1)" ]]; then
12    echo -e "\033[34;1mINFO:\033[0m Removing volume $1\033[0m"
13    (docker volume rm "$1") || true
14  fi
15}
16function container_running {
17  if [[ "$(docker ps -q -f name=$1)" ]]; then
18    return 0;
19    else return 1;
20  fi
21}
22function cleanup_node {
23  if container_running "$1"; then
24    echo -e "\033[34;1mINFO:\033[0m Removing container $1\033[0m"
25    (docker container rm --force --volumes "$1") || true
26  fi
27  if [[ -n "$1" ]]; then
28    echo -e "\033[34;1mINFO:\033[0m Removing volume $1-${suffix}-data\033[0m"
29    cleanup_volume "$1-${suffix}-data"
30  fi
31}
32function cleanup_network {
33  if [[ "$(docker network ls -q -f name=$1)" ]]; then
34    echo -e "\033[34;1mINFO:\033[0m Removing network $1\033[0m"
35    (docker network rm "$1") || true
36  fi
37}
38
39function cleanup_trap {
40  status=$?
41  set +x
42  if [[ "$DETACH" != "true" ]]; then
43    echo -e "\033[34;1mINFO:\033[0m clean the network if not detached (start and exit)\033[0m"
44    cleanup_all_in_network "$1"
45  fi
46  # status is 0 or SIGINT
47  if [[ "$status" == "0" || "$status" == "130" ]]; then
48    echo -e "\n\033[32;1mSUCCESS run-tests\033[0m"
49    exit 0
50  else
51    echo -e "\n\033[31;1mFAILURE during run-tests\033[0m"
52    exit ${status}
53  fi
54};
55function cleanup_all_in_network {
56
57  if [[ -z "$(docker network ls -q -f name="^$1\$")" ]]; then
58    echo -e "\033[34;1mINFO:\033[0m $1 is already deleted\033[0m"
59    return 0
60  fi
61  containers=$(docker network inspect -f '{{ range $key, $value := .Containers }}{{ printf "%s\n" .Name}}{{ end }}' $1)
62  while read -r container; do
63    cleanup_node "$container"
64  done <<< "$containers"
65  cleanup_network $1
66  echo -e "\033[32;1mSUCCESS:\033[0m Cleaned up and exiting\033[0m"
67};
68