#!/bin/bash

COMPOSE_PLUGIN=$(docker compose >/dev/null 2>&1; if [ "$?" == "0" ]; then echo "true"; else echo "false"; fi)
COMPOSE_LEGACY=$(docker-compose >/dev/null 2>&1; if [ "$?" == "0" ]; then echo "true"; else echo "false"; fi)

case "true" in
  $COMPOSE_PLUGIN)
    COMPOSE="docker compose"
    ;;
  $COMPOSE_LEGACY)
    COMPOSE="docker-compose"
    ;;
  *)
    echo "No docker-compose found."
    exit 1
    ;;
esac

if [ ! -z $1 ]; then
  START_DIR="$1"
else
  START_DIR="$HOME/docker-compose"
fi

if [ ! -d "$START_DIR" ]; then
  echo "Invalid directory '$START_DIR': Exiting."
  exit 1
fi

echo "Current dir is $START_DIR"

for f in $(find $START_DIR/ -iname "docker-compose.yml")
do
  CURRENT_DIR=$(dirname "${f}")
  echo "Updating $CURRENT_DIR..."
  cd $CURRENT_DIR
  if [ ! -f ".update.ignore" ]; then
    $COMPOSE pull --no-parallel && $COMPOSE up -d --remove-orphans 2>&1
  else
    echo "Stack flagged for ignore updates"
  fi
done

cd $START_DIR