finally add a shorthand helper script for rsyncing repos to machines

This commit is contained in:
Trolli Schmittlauch 2023-05-31 12:24:05 +02:00
parent 02da74da11
commit ce31103112
2 changed files with 81 additions and 1 deletions

View file

@ -453,7 +453,8 @@ in
binpath() { binpath() {
realpath $(${pkgs.which}/bin/which $1) realpath $(${pkgs.which}/bin/which $1)
} }
''; ''
+ (import ./scripts/reporsync.nix {inherit pkgs;});
oh-my-zsh = { oh-my-zsh = {

View 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"
}
''