#!/usr/bin/env sh
# Backup and restore scripts for Birdhouse
# Assumes that the corresponding 'backup.include.sh' is sourced.
# However, does not perform it here explicitly to avoid duplicate sourcing and evals by other scripts.

backup_logs() {
  _do_backup() {
    docker run --rm \
               -v ${BIRDHOUSE_BACKUP_VOLUME}:/backup \
               -v ${BIRDHOUSE_LOG_DIR}:/birdhouse-logs \
               "${BASH_IMAGE}" \
               sh -c 'mkdir -p /backup/birdhouse-logs; cp -a /birdhouse-logs/ /backup/birdhouse-logs/application-logs'
    ${BIRDHOUSE_EXE} --quiet compose logs | docker run -i --rm \
                                                       -v ${BIRDHOUSE_BACKUP_VOLUME}:/backup \
                                                       "${BASH_IMAGE}" \
                                                       sh -c 'mkdir -p '/backup/birdhouse-logs/docker-container-logs'; while read -r line; do echo "${line#*|}" >> "$(printf "/backup/birdhouse-logs/docker-container-logs/%s.log" ${line%%|*})"; done'
  }
  backup_create_runner 'birdhouse logs and docker container logs' _do_backup
}

backup_local_env_file() {
  _do_backup() {
    docker run --rm \
               -v ${BIRDHOUSE_BACKUP_VOLUME}:/backup \
               -v ${BIRDHOUSE_LOCAL_ENV}:/birdhouse-local-env \
               "${BASH_IMAGE}" \
               sh -c 'mkdir -p /backup/birdhouse/; cp -a /birdhouse-local-env /backup/birdhouse/env.local'
  }
  backup_create_runner 'birdhouse local environment file' _do_backup

}

restore_logs() {
  BIRDHOUSE_BACKUP_RESTORE_NO_CLOBBER=true backup_restore_runner 'birdhouse logs and docker container logs' : 'birdhouse-logs' 
}

restore_local_env_file() {
  BIRDHOUSE_BACKUP_RESTORE_NO_CLOBBER=true backup_restore_runner 'birdhouse local environment file' : 'birdhouse'
}
