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
	 manuel
						manuel