feat: initial version

This commit is contained in:
manuel 2024-10-25 08:41:52 +08:00
commit ba3a9af96b

79
joj-repo Normal file
View File

@ -0,0 +1,79 @@
#!/bin/bash
COURSE=$(hostname)
SEMESTER=${COURSE#*-}
COURSE=${COURSE%-*}
#
# initial repo/config setup
#
init() {
[ -d $COURSE-config ] && backup $COURSE-config
git clone ssh://git@focs.ji.sjtu.edu.cn:2222/$COURSE-$SEMESTER/$COURSE-joj.git $COURSE-config
cd $COURSE-config
# copy config files
rsync -r ./$HOME/ $HOME
# check existence of grading branch
git branch -a | grep -q grading && br=1
cd ..
# backup current grading scoreboard
[ -d $COURSE-joj ] && backup $COURSE-joj
# clone grading branch or create one + push readme
if [ "x$br" = "x1" ]; then
git clone -b grading ssh://git@focs.ji.sjtu.edu.cn:2222/$COURSE-$SEMESTER/$COURSE-joj.git
cd $COURSE-joj
git switch grading
git pull
else
git clone ssh://git@focs.ji.sjtu.edu.cn:2222/$COURSE-$SEMESTER/$COURSE-joj.git
cd $COURSE-joj
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 )
cd $HOME/.cache/$COURSE-config
git pull
rsync -r ./$HOME/ $HOME
}
#
# simple local backup
#
backup() {
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"
cd $HOME/.cache
$1