#!/usr/bin/env bash

#
# Copyright (c) 2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

exe_name=$(basename $0)

# outputs the date and time in pre-set formats
# default format is: 20150114-181112
# usage: timestamp [-a] [-d] [-u] [-s] [-S]
# where: -a changes default to: 2015-01-14-18-11-56
#        -d changes default to: 20150114
#        -u changes default to: 20150114_181201
#        -s changes default to: 20150114-1812.04
#        -S changes default to: 20150114-1812
# Some switches can be mixed and matched, eg. -Sa gives 2015-01-14-18-13

date_format="%Y%m%d"
time_format="%H%M"
seconds_format="%S"
seconds_separator=""
date_time_separator="-"

function usage {
	printf "usage: %s [-a] [-d] [-u] [-s] [-S]\n" $exe_name >&2
}

function fail {
	usage
	exit -1
}

function get_opts {
	declare -r optstr="adusSh"
	while getopts ${optstr} opt; do
		case ${opt} in
		a) all_separated=1 ;;
		d) date_only=1 ;;
		u) date_time_separator="_" ;;
		s) seconds_separator="." ;;
		S) no_seconds=1 ;;
		h) usage; exit 0 ;;
		*) fail ;;
		esac
	done
}

get_opts $@

if [ x${all_separated} == x1 ]; then
	date_format="%Y-%m-%d"
	time_format="%H-%M"
	seconds_separator="-"
fi

if [ x${date_only} == x1 ]; then
	date_time_separator=""
	time_format=""
	seconds_format=""
	seconds_separator=""
fi

if [ x${no_seconds} == x1 ]; then
	seconds_format=""
	seconds_separator=""
fi

output_date=${date_format}${date_time_separator}
output_time=${time_format}${seconds_separator}${seconds_format}
output=$(date +${output_date}${output_time})

echo ${output}
