feat: initial version
This commit is contained in:
commit
ba3a9af96b
79
joj-repo
Normal file
79
joj-repo
Normal 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
|
Loading…
Reference in New Issue
Block a user