#!/bin/bash -

# This script exports data from canto - to be set to run automatically on Wednesdays noon.

# Define canto-space root in flybase-vm
CANTOSPACE="/data/export/canto-space"

# Define logs folder inside canto-space
LOGS="logs"

# Define log file
LOGFILE="${CANTOSPACE}/${LOGS}/canto_weekly_export.log"

# Redirect all output to logfile
exec &>> "${LOGFILE}"

# Function to log messages with date stamp
# e.g. log "Canto script completed successfully" generates something like 2020-05-20 10:24:37: Canto script completed successfully

function log () {
    local DATESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
    /bin/echo "${DATESTAMP}: ${1}"
}

# Define export directory filepath
EXPORT_DIR="${CANTOSPACE}/import_export"

#Define export filename
EXPORT_FILENAME=canto_server_export_latest.json

#Define filepath to dedicated archives folder at export-vm
EXPORTVM_EXPORT_ARCHIVE="/data/export/archives/canto_export_json"

log "Starting"

if ./canto/script/canto_docker  --non-interactive ./script/canto_export.pl canto-json --export-curator-names --export-approved > "${EXPORT_DIR}/${EXPORT_FILENAME}"; then
	
	log "Approved sessions exported into ${EXPORT_DIR} successful"
	
	if [[ -e "${EXPORT_DIR}/${EXPORT_FILENAME}" ]]; then

		# Create archive directory in canto-space if required
		ARCHIVE="${CANTOSPACE}/archive"

		if [[ ! -d "${ARCHIVE}" ]]; then
   			log "Creating ${ARCHIVE}"
   			mkdir "${ARCHIVE}"
		fi

		#Define date-time-stamped filename for archiving
		EXPORT_FILENAME_ARCHIVE="canto_server_export_$(date +"%Y-%m-%d-%T").json"

		
		function archiving()
		{
		    local FILENAME=${1}
	
			log "Archiving ${EXPORT_FILENAME} to ${FILENAME}"
			
			cp "${EXPORT_DIR}/${EXPORT_FILENAME}" "${FILENAME}"
	
		}
		
		for FILE in "${ARCHIVE}/${EXPORT_FILENAME_ARCHIVE}" "${EXPORTVM_EXPORT_ARCHIVE}"; do
    	archiving ${FILE}
		done
	
		log "Finished"

		exit
					
	else 
			
		log "But ${EXPORT_DIR}/${EXPORT_FILENAME} cannot be found - cannot continue"
			
		log "Finished"		
		
		exit
	fi

else
	
	log "Export failed."
		
	log "Finished"
	
	exit

fi
	
exit