#!/bin/sh
PGNAME="nsdbbackup"
PGDESC="NovaStar database backup"
PGVERS=$(nsversion)
LOCKFILE="/usr/ns/locks/"$PGNAME

# Display program usage
usage () {
	echo "$PGNAME [$PGVERS]: $PGDESC"
	echo "Usage: $PGNAME [options...] backupfilename"
	echo "where:"
  echo " backupfilename     File name to receive the backup."
	echo "and [options...] are:"
	echo " -F, --format=c|t|p Backup file format: custom, tar, plain text (Default: c)"
	echo " -h hostname        Backup database from host name or IP (Default: localhost)"
	echo " -help|--help       Display this help."
	echo " -q|-quiet|--quiet  Do not display activity messages."
	echo " -version|--version Display program version."
}

# Display program usage
version () {
	echo "$PGVERS"
}

# Check for program use query
if [ "$1" = "-help" -o "$1" = "--help" ]; then
	usage
	exit 0
fi

# Check for program version query
if [ "$1" = "-version" -o "$1" = "--version" ]; then
	version
	exit 0
fi

# Check for command arguments.
quiet="false"
arguments=""
quietargument=""
backupfilename=""
hostname="localhost"
format="-Fc"
while test $# -gt 0; do
	if [ "${1#-F}" != $1 -o "${1#--format=}" != "$1" ]; then format="$1";
	elif [ "$1" = "-q" -o "$1" = "-quiet" -o "$1" = "--quiet" ]; then quiet="true";
	elif [ "$1" = "-h" -a $# -gt 1 ]; then shift; hostname=$1;
	elif [ -z "$backupfilename" ]; then backupfilename=$1;
	else usage; fi
	shift
done

# Set quiet command arguments.
if [ $quiet != "false" ]; then 
	quiet="true"
	quietargument="-quiet"
	arguments=">/dev/null"
fi

# Quit if no backup file name.
if [ -z "$backupfilename" ]; then
	if [ $quiet = "false" ]; then 
		usage
		echo
		echo "Error: backup file name required!"
	fi
	exit 1
fi

# Use localhost by default.
hostname=${hostname:-localhost}

# Check if novastar database password saved
nsdbpassword $hostname

# Set backup host to current host.
BACKUPHOST="$hostname"

# Execute backup
if [ "$quiet" = "true" ]; then
	verbose=""
else
	verbose="-v"
fi

# Check if novastar database password saved on backup host
nsdbpassword "$BACKUPHOST"

# Extract host name and port
hostport=$(nsdbhostport -h $BACKUPHOST)
hostname=$(nsdbhostname -h $BACKUPHOST)

# Lock process
nstime >$LOCKFILE

#pg_dump -i$verbose -Fc -U novastar novastar -f "$backupfilename"
if [ "$quiet" != "true" ]; then echo "Backup database from $BACKUPHOST to $backupfilename started..."; fi
pg_dump $verbose $format -h $hostname -p $hostport -U novastar novastar -f "$backupfilename"
if [ "$quiet" != "true" ]; then echo "Backup database from $BACKUPHOST to $backupfilename finished."; fi

# Unlock process
rm -f $LOCKFILE
