finally add a shorthand helper script for rsyncing repos to machines
This commit is contained in:
		
							parent
							
								
									02da74da11
								
							
						
					
					
						commit
						ce31103112
					
				
					 2 changed files with 81 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -453,7 +453,8 @@ in
 | 
			
		|||
        binpath() {
 | 
			
		||||
          realpath $(${pkgs.which}/bin/which $1)
 | 
			
		||||
        }
 | 
			
		||||
        '';
 | 
			
		||||
        ''
 | 
			
		||||
        + (import ./scripts/reporsync.nix {inherit pkgs;});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      oh-my-zsh = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										79
									
								
								home/scripts/reporsync.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								home/scripts/reporsync.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
{pkgs, ...}:
 | 
			
		||||
''
 | 
			
		||||
# rsync -rlptzv --progress --delete --exclude=.git --exclude=.vscode --exclude=result --exclude=channels/ /Users/os/src/fc.qemu os@hydra01:
 | 
			
		||||
# rsync -rlptzv --progress --rsh="ssh -J fcio-whq-jump" --delete --exclude=.git --exclude=.vscode --exclude=result --exclude=channels/ /Users/os/src/fc-nixos/ os@patty:fc-nixos/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEFAULT_JUMPHOST="fcio-whq-jump"
 | 
			
		||||
 | 
			
		||||
_parse_rsync_args() {
 | 
			
		||||
	# reset pre-defined variables that are read and manipulated throughout this function
 | 
			
		||||
	unset JUMPHOST
 | 
			
		||||
	# arrays are bash or zsh specific
 | 
			
		||||
	RSYNC_OPTS=("-rlptzv" "--progress" "--delete" "--exclude=.git" "--exclude=.vscode" "--exclude=result" "--exclude=channels/")
 | 
			
		||||
 | 
			
		||||
	while getopts ':Jj:' OPT; do
 | 
			
		||||
		case $OPT in 
 | 
			
		||||
			j)
 | 
			
		||||
				if [ -n "$JUMPHOST" ]; then
 | 
			
		||||
					echo "-j and -J are conflicting arguments" >&2
 | 
			
		||||
					return 1
 | 
			
		||||
				fi
 | 
			
		||||
				JUMPHOST="$OPTARG"
 | 
			
		||||
				;;
 | 
			
		||||
			J)
 | 
			
		||||
				if [ -n "$JUMPHOST" ]; then
 | 
			
		||||
					echo "-j and -J are conflicting arguments" >&2
 | 
			
		||||
					return 1
 | 
			
		||||
				fi
 | 
			
		||||
				JUMPHOST="$DEFAULT_JUMPHOST"
 | 
			
		||||
				;;
 | 
			
		||||
			?)
 | 
			
		||||
				echo "rsyncrepo [-J] [-j <jumphost>] <directory> <hostname>"
 | 
			
		||||
				return 1
 | 
			
		||||
				;;
 | 
			
		||||
		esac
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# trim CLI parameters
 | 
			
		||||
	shift "(($OPTIND -1))"
 | 
			
		||||
 | 
			
		||||
	RR_FROM="$1"
 | 
			
		||||
	RR_TO="$2"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_do_rsync() {
 | 
			
		||||
	# parameter check
 | 
			
		||||
	if [ -z "$1" ] || [ -z "$2" ]; then
 | 
			
		||||
		echo "Missing arguments, required: <directory> <hostname>" >&2
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if [ -n "$JUMPHOST" ]; then
 | 
			
		||||
		RSYNC_OPTS+=("--rsh=/Users/os/.nix-profile/bin/ssh -J ''${JUMPHOST}")
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	for OPTI in "''${RSYNC_OPTS[@]}"; do
 | 
			
		||||
		echo "$OPTI"
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# we always sync /path/to/dir/ to hostname:dir
 | 
			
		||||
	RR_DEST="''${2}:$(basename $(realpath "''${1}"))"
 | 
			
		||||
 | 
			
		||||
	echo "Syncing ''${1} to ''${RR_DEST}…"
 | 
			
		||||
 | 
			
		||||
	# ensure trailing slash for src to avoid recreating directory
 | 
			
		||||
	${pkgs.rsync}/bin/rsync "''${RSYNC_OPTS[@]}"  "''${1}/" "''${RR_DEST}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rsyncrepo() {
 | 
			
		||||
	_parse_rsync_args "$@"
 | 
			
		||||
	# inherits parsed arguments through variables
 | 
			
		||||
	_do_rsync "$RR_FROM" "$RR_TO"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rsynchydra() {
 | 
			
		||||
	_parse_rsync_args "$@"
 | 
			
		||||
	_do_rsync "$RR_FROM" "hydra01"
 | 
			
		||||
}
 | 
			
		||||
''
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue