#!/bin/bash

# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

TS_TOPDIR="${0%/*}/../.."
TS_DESC="September 1752 with week numbers"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_CAL"

export TERM=linux

USETERM=$( ts_has_option "useterm" "$*" )
MYMONTH="09 1752"
MYYEAR="1752"

[ "$USETERM" == "yes" ] && TS_VERBOSE="yes"
ts_log ""


ts_log "Gregorian - Monday-based month with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1mw
fi
$TS_CMD_CAL -1mw $MYMONTH >> $TS_OUTPUT
ts_log "Gregorian - Sunday-based month with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1sw $MYMONTH
fi
$TS_CMD_CAL -1sw $MYMONTH >> $TS_OUTPUT
ts_log "Julian - Monday-based month with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1mjw $MYMONTH
fi
$TS_CMD_CAL -1mjw $MYMONTH >> $TS_OUTPUT
ts_log "Julian - Sunday-based month with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1sjw $MYMONTH
fi
$TS_CMD_CAL -1sjw $MYMONTH >> $TS_OUTPUT


ts_log "Gregorian - Monday-based three months with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -3mw
fi
$TS_CMD_CAL -3mw $MYMONTH >> $TS_OUTPUT
ts_log "Gregorian - Sunday-based three months with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -3sw $MYMONTH
fi
$TS_CMD_CAL -3sw $MYMONTH >> $TS_OUTPUT
ts_log "Julian - Monday-based three months with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -3mjw $MYMONTH
fi
$TS_CMD_CAL -3mjw $MYMONTH >> $TS_OUTPUT
ts_log "Julian - Sunday-based three months with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -3sjw $MYMONTH
fi
$TS_CMD_CAL -3sjw $MYMONTH >> $TS_OUTPUT


ts_log "Gregorian - Monday-based year with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1mw $MYYEAR
fi
$TS_CMD_CAL -1mw $MYYEAR >> $TS_OUTPUT
ts_log "Gregorian - Sunday-based year with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1sw $MYYEAR
fi
$TS_CMD_CAL -1sw $MYYEAR >> $TS_OUTPUT
ts_log "Julian - Monday-based year with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1mjw $MYYEAR
fi
$TS_CMD_CAL -1mjw $MYYEAR >> $TS_OUTPUT
ts_log "Julian - Sunday-based year with week numbers"
if [ "$USETERM" == "yes" ]; then
	$TS_CMD_CAL -1sjw $MYYEAR
fi
$TS_CMD_CAL -1sjw $MYYEAR >> $TS_OUTPUT

ts_finalize
