refactor: repos init

This commit is contained in:
manuel 2024-11-04 09:39:44 +08:00
parent 00e0202f62
commit 34c9192711

View File

@ -10,7 +10,6 @@ LXCHOST="tt@172.17.0.1"
# #
# parse commit message # parse commit message
# #
parse_commit() { parse_commit() {
message=$(git log -1 --pretty=format:%s ${GITHUB_WORKFLOW_SHA}) message=$(git log -1 --pretty=format:%s ${GITHUB_WORKFLOW_SHA})
@ -26,7 +25,6 @@ parse_commit() {
# #
# gen # gen
# #
generate_json() { generate_json() {
parse_commit parse_commit
@ -42,42 +40,30 @@ generate_json() {
# #
init() { init() {
[ -d $COURSE-config ] && backup $COURSE-config # backup current grading scoreboard
[ -d $COURSE-joj ] && backup $COURSE-joj
git clone $GITEA/$ORG/$COURSE-joj.git $COURSE-config git clone $GITEA/$ORG/$COURSE-joj.git
cd $COURSE-config cd $COURSE-config
# copy config files # check existence of grading branch
rsync -r ./$HOME/ $HOME git branch -a | grep -q grading && br=1
# 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 # clone grading branch or create one + push readme
if [ "x$br" = "x1" ]; then if [ "x$br" = "x1" ]; then
git clone -b grading $GITEA/$COURSE-$SEMESTER/$COURSE-joj.git git switch grading
cd $COURSE-joj git pull
git switch grading else
git pull git switch --orphan grading
else
git clone $GITEA/$COURSE-$SEMESTER/$COURSE-joj.git
cd $COURSE-joj echo "# $COURSE JOJ grading" > Readme.md
git switch --orphan grading echo "This branch is automatically updated by JOJ, **never edit any file in this branch!**" >> Readme.md
echo "# $COURSE JOJ grading" > Readme.md git add Readme.md
echo "This branch is automatically updated by JOJ, **never edit any file in this branch!**" >> Readme.md git commit -m"docs: readme"
git push
git add Readme.md fi
git commit -m"docs: readme"
git push
fi
} }
@ -87,12 +73,12 @@ init() {
# #
update() { update() {
[ -d "$COURSE-joj" ] || ( echo "ERROR: init first!" 1>&2 && exit ) [ -d "$COURSE-joj" ] || ( echo "ERROR: init first!" 1>&2 && exit )
# genjson # genjson
rsync -a ./$HOME/ $LXCHOST:$HOME rsync -a ./$HOME/ $LXCHOST:$HOME
} }
@ -102,13 +88,16 @@ update() {
# #
backup() { backup() {
BCK="$HOME/.local/share/joj/$1-$(date +%y%m%d-%H%M%S)" [ -d $HOME/.local/share/joj ] || mkdir -p $HOME/.local/share/joj
echo "WARNING: $1 already exits, backing it up to $BCK"
mv "$1" "$BCK" 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" [ -z "$1" ] && echo "Usage: $0 update|init" && exit 1
[ -d $HOME/.cache ] || mkdir $HOME/.cache
cd $HOME/.cache cd $HOME/.cache
$1 $1