#!/usr/bin/env bash
#/ Usage: ghe-backup-settings
#/ Backup settings from a snapshot to the given <host>.
set -e

# Bring in the backup configuration
# shellcheck source=share/github-backup-utils/ghe-backup-config
. "$( dirname "${BASH_SOURCE[0]}" )/ghe-backup-config"

# Perform a host-check and establish GHE_REMOTE_XXX variables.
ghe_remote_version_required "$host"

bm_start "$(basename $0)"

# Grab the host
host="$GHE_HOSTNAME"

# Create the snapshot directory if needed and change into it.
mkdir -p "$GHE_SNAPSHOT_DIR"
cd "$GHE_SNAPSHOT_DIR"

log_info "* Transferring settings data ..." 1>&3
ghe-ssh "$host" -- 'ghe-export-settings' > settings.json

log_info "* Transferring license data ..." 1>&3
ghe-ssh "$host" -- "sudo cat '$GHE_REMOTE_LICENSE_FILE'" > enterprise.ghl

if ghe-ssh "$host" -- "test -f $GHE_REMOTE_DATA_USER_DIR/common/idp.crt"; then
  log_info "* Transferring SAML keys ..." 1>&3
  ghe-ssh $host -- sudo tar -C $GHE_REMOTE_DATA_USER_DIR/common/ -cf - "idp.crt saml-sp.p12" > saml-keys.tar
fi

if ghe-ssh "$host" -- "which ghe-export-ssl-ca-certificates 1>/dev/null"; then
  log_info "* Transferring CA certificates ..." 1>&3
  ghe-ssh "$host" -- "ghe-export-ssl-ca-certificates" > ssl-ca-certificates.tar
fi

if [ "$GHE_BACKUP_STRATEGY" = "cluster" ]; then
  log_info "* Transferring cluster configuration ..." 1>&3
  if ! ghe-ssh "$host" -- "sudo cat $GHE_REMOTE_CLUSTER_CONF_FILE 2>/dev/null" > cluster.conf; then
    log_error "Error: Enterprise Cluster is not configured yet, backup will fail" >&2
    exit 1
  fi
else
  if ghe-ssh "$host" -- "sudo cat $GHE_REMOTE_DATA_USER_DIR/common/uuid 2>/dev/null" > uuid; then
    log_info "* Transferring UUID ..." 1>&3
  fi
fi

bm_end "$(basename $0)"
