It works
This commit is contained in:
		
							parent
							
								
									4a03e5cb43
								
							
						
					
					
						commit
						ffb65e26b5
					
				
							
								
								
									
										75
									
								
								apt-repo-updater.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								apt-repo-updater.sh
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| WORK_DIR=${WORK_DIR:?"WORK_DIR is not set!!"} | ||||
| INCOME_DIR=${INCOME_DIR:="${WORK_DIR}/income"} | ||||
| CODENAME=(bookworm) | ||||
| 
 | ||||
| set -o functrace | ||||
| set -o nounset | ||||
| set -o errtrace | ||||
| set -o errexit | ||||
| 
 | ||||
| function msg { | ||||
|     local mesg="$1"; shift | ||||
|     printf "====> ${mesg}\n" "$@" | ||||
| } | ||||
| 
 | ||||
| function term_handle { | ||||
|     if [[ -n "$inotify_pid" ]] | ||||
|     then | ||||
|         GO_ON=0 | ||||
|         msg "sending TERM to inotifywait..." | ||||
|         kill -s TERM "$inotify_pid" 2>/dev/null || true | ||||
|     fi | ||||
| } | ||||
| function term_delay  { | ||||
|     GO_ON=0 | ||||
|     msg "building repo, will terminate later" | ||||
| } | ||||
| trap 'term_handle' TERM SIGINT INT | ||||
| 
 | ||||
| 
 | ||||
| function build_repo { | ||||
|     trap 'term_delay' TERM SIGINT INT | ||||
| 
 | ||||
|     for deb in "${INCOME_DIR}/"* | ||||
|     do | ||||
|         if [[ "$deb" = *"/*" ]] | ||||
|         then | ||||
|             msg "no file in $INCOME_DIR, skip this build" | ||||
|             break | ||||
|         fi | ||||
| 
 | ||||
|         msg "start adding $deb" | ||||
|         for codename in "${CODENAME[@]}" | ||||
|         do | ||||
|             msg "adding $deb into $codename" | ||||
|             reprepro includedeb "$codename" "$deb" | ||||
|         done | ||||
|         msg "finished adding $deb" | ||||
| 
 | ||||
|         msg "removing $deb from income dir $INCOME_DIR" | ||||
|         rm $deb | ||||
|     done | ||||
| 
 | ||||
|     trap 'term_handle' TERM SIGINT INT | ||||
| } | ||||
| 
 | ||||
| cd "$WORK_DIR" | ||||
| 
 | ||||
| GO_ON=1             # flag of if continue the loop | ||||
| PROGRAM_NAME="$0" | ||||
| while [[ "$GO_ON" = "1" ]] | ||||
| do | ||||
|     build_repo | ||||
| 
 | ||||
|     msg "start watching $INCOME_DIR" | ||||
|     inotifywait --quiet -e move -e modify -e create "$INCOME_DIR" & | ||||
|     inotify_pid="$!" | ||||
| 
 | ||||
|     # when inotifywait was killed, its return code is no-zero, | ||||
|     # so when wait return inotifywait's return code, script will exit due to errexit | ||||
|     wait || true | ||||
| done | ||||
| 
 | ||||
| msg "$PROGRAM_NAME shutdown" | ||||
		Loading…
	
		Reference in a new issue
	
	 leafee98
						leafee98