#!/usr/bin/env bash

# This material is free software for demonstration purposes only.

# Copyright (c) 2018 Alec Clews <alecclews@gmail.com>
#
#
# Use of this source code is governed by an MIT license.
# See the project's LICENSE file for more information.

# Setup local docker envirobment to start the talk

IMAGES="alpine:latest \
    dockerfornovices/sqlite:0.1 \
    dockerfornovices/lua-dev:latest \
    dockerfornovices/api-server:latest \
    gcr.io/google.com/cloudsdktool/cloud-sdk:slim \
    $(cat docker-compose/docker/dev-compose.yaml |
sed -nEe '/^[[:space:]]*image:[[:space:]]+(.+)$/s//\1/p' | sort -u |
sed -Ee 's/^([^:]+)$/\1:latest/' | tr "\n" " ")"

printf "Image list is:\n$(echo $IMAGES | tr ' ' '\n')\n"

[[ $(docker container ls -aq | wc -l) -gt 0 ]]  && echo Remove all running containers && docker container rm -f $(docker container ls -aq)
[[ $(docker volume ls -q | wc -l) -gt 0 ]]  && echo Remove all volumes && docker volume rm $(docker volume ls -q)

REQUIRED_NETWORKS="bridge host none"

for n in $(docker network ls --format '{{.Name}}') ; do
  if [[ $REQUIRED_NETWORKS =~ $n ]] ;then
    echo keep network $n
  else
    echo delete network $n
    docker network rm $n
  fi
done

for i in $(docker image  ls --format '{{.Repository}}:{{.Tag}}') ; do
  if [[ ! $IMAGES =~ $i ]] ; then 
    echo Remove image $i 
    docker image rm -f $i
  fi
done

for i in $IMAGES ; do echo ; docker image pull $i;  done
