#!/bin/bash

set -eu

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. $DIR/../help.sh
. $DIR/../postgres/run --only-source

registry_help() {
  echo "./run htpasswd : 🔑 Génération du fichier htpasswd"
  echo "./run build    : 🏗 Construction de l'image custom"
  echo "./run backup   : 💾 Sauvegarde des images du registry"
}

registry_htpasswd() {
  script_env
  mkdir -p auth
  echo "🔑 Génération du fichier htpasswd"
  docker run --entrypoint htpasswd $REGISTRY_IMAGE -Bbn $REGISTRY_USER $REGISTRY_PASSWORD > auth/htpasswd
}

registry_build() {
  script_env
  echo "🏗 Construction de l'image custom"
  DOCKER_FILE_DEFAULT=.
  DOCKER_FILE=${DOCKER_FILE:-$DOCKER_FILE_DEFAULT}
  docker build $DOCKER_FILE -t $REGISTRY_CUSTOM_IMAGE
}

registry_backup() {
  script_env
  echo "💾 Sauvegarde des images du registry"

  REGISTRY_BACKUP_FILE_DEFAULT=`date +%Y%m%d_%H%M%S`_${REGISTRY_DOMAIN}.tar
  REGISTRY_BACKUP_FILE=${REGISTRY_BACKUP_FILE:-$REGISTRY_BACKUP_FILE_DEFAULT}

  docker run --rm --volumes-from registry -v /home/pi/backups/registry:/backup alpine:3.12.3 ash -c "cd /var/lib/registry && tar cvf /backup/$REGISTRY_BACKUP_FILE ."
}

registry_restore() {
  script_env

  docker run -it --rm -v $HOME/backups/${REGISTRY_DOMAIN}:/backup --volumes-from registry alpine:3.12.3 ash -c "cd /var/lib/registry && tar xvf /backup/${BACKUP_DATE}_${REGISTRY_DOMAIN}.tar --strip 1"
}

if [ $# -ge 1 ]; then
  if [ "${1}" == "htpasswd" ]; then
    script_start
    registry_htpasswd
    script_end
  elif [ "${1}" == "build" ]; then
    script_start
    registry_build
    script_end
  elif [ "${1}" == "backup" ]; then
    script_start
    registry_backup
    script_end
  elif [ "${1}" != "--only-source" ]; then
    registry_help
  fi
else
  registry_help
fi