#!/bin/bash

GITEA="ssh://git@focs.ji.sjtu.edu.cn:2222"
ORG=${GITHUB_ACTION_REPOSITORY%/*}
COURSE=${ORG/-*}

LXCHOST="tt@172.17.0.1"


#
# parse commit message
#
parse_commit() {

	message=$(git log -1 --pretty=format:%s ${GITHUB_WORKFLOW_SHA})

	# add empty scope if none provided, then split "type(scope): message"
	OLDIFS=$IFS; IFS=$'\n'
	commit=( $(sed 's/\(^[^(]*\):/\1( ):/g; s/\([^(]*\)(\?\([^)]*\))\?: \(.*\)/\1\n\2\n\3/g' <<< ${message}) )
	IFS=$OLDIFS

}


#
# gen 
#
generate_json() {

	parse_commit
	for i in ${commit[1]}; do 
		echo joj-conf-generator $HOME/.config/joj/$i
	done

}


#
# initial repo/config setup
#
init() {

	# backup current grading scoreboard
	[ -d $COURSE-joj ] && backup $COURSE-joj

	git clone $GITEA/$ORG/$COURSE-joj.git

	cd $COURSE-config

	# check existence of grading branch
	git branch -a | grep -q grading && br=1

# clone grading branch or create one + push readme
if [ "x$br" = "x1" ]; then
	git switch grading
	git pull
else
	git switch --orphan grading

	echo "# $COURSE JOJ grading" > Readme.md
	echo "This branch is automatically updated by JOJ, **never edit any file in this branch!**" >> Readme.md

	git add Readme.md
	git commit -m"docs: readme"
	git push
fi

}


#
# update config repo + copy config files
#
update() {

	[ -d "$COURSE-joj" ] || ( echo "ERROR: init first!" 1>&2 && exit )


	#	genjson

	rsync -a ./$HOME/ $LXCHOST:$HOME

}


#
# simple local backup
#
backup() {

	[ -d $HOME/.local/share/joj ] || mkdir -p $HOME/.local/share/joj

	BCK="$HOME/.local/share/joj/$1-$(date +%y%m%d-%H%M%S)"
	echo "WARNING: $1 already exits, backing it up to $BCK"
	mv "$1" "$BCK"

}

[ -z "$1" ] && echo "Usage: $0 update|init" && exit 1

[ -d $HOME/.cache ] || mkdir $HOME/.cache
cd $HOME/.cache
$1
