#!/system/bin/sh

# ---------------------------
# Set date + time in OrangeFox recovery
#
# By DarthJabba9
#
# Usage: setdate "2025-01-18-16:31"
#
# date format: date +%Y%m%d%H%M -s 202501271715
# Copyright (C) 2018-2025 The OrangeFox Recovery Project
# 03 February 2025
# -------------------------

# process the arguments
if [ -z "$1" -o "$1" = "-h" -o "$1" = "--help" ]; then
   echo "Usage =  $0 YYYY-mm-dd-HH:MM"
   echo "Example: $0 2025-01-27-16:31"
   exit
fi

gnudate=0; # do we have a stand-alone gnu coreutils 'date' utility?
bb=$(which busybox)
if [ -f /sbin/gnudate ]; then
	date_cmd="/sbin/gnudate";
	gnudate=1;
elif [ -n "$bb" ]; then
	date_cmd="$bb date";
else
	date_cmd="date";
fi

# configure
DateStr="+%Y%m%d%H%M"
Value="$1"
Value=$(echo "$1" | tr -d "-")  # remove "-"
Value=$(echo "$Value" | tr -d ":") # remove ":"
Value=$(echo "$Value" | tr -d " ") # remove space

# change the date
set_arg=""
if [ "$gnudate" = 1 ]; then
	Value=$(echo "$1" | sed -r 's/(.*)-/\1 /'); # remove the last "-"
	DateStr="-s $Value";
	echo "- Running command: $date_cmd $DateStr";
	$date_cmd "$DateStr";
elif [ -n "$bb" ]; then
	DateStr=$DateStr" -s";
else
	set_arg="set"
fi

if [ "$gnudate" != 1 ]; then
	CMD="$date_cmd $DateStr $Value $set_arg";
	echo "- Running command: $CMD";
	$CMD;
fi

exit 0;
#
