diff options
| author | Alejandro Soto <alejandro@34project.org> | 2025-08-24 18:55:06 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2025-08-24 18:55:06 -0600 |
| commit | d7ac88762db111a7962c4e14b5f4e37ab85ccac7 (patch) | |
| tree | 0c2c8c4383bef74215e3b7c48a2f6b0117f084bc /pkgs/btclone | |
| parent | 504589d1035f27b766bd33040b415b2725ece4ca (diff) | |
tree-wide: reformat using alejandra after enabling trivionomicon
Diffstat (limited to '')
| -rwxr-xr-x | pkgs/btclone/btclone.nix | 40 | ||||
| -rw-r--r-- | pkgs/btclone/default.nix | 9 |
2 files changed, 27 insertions, 22 deletions
diff --git a/pkgs/btclone/btclone.nix b/pkgs/btclone/btclone.nix index 6b8e809..68673a7 100755 --- a/pkgs/btclone/btclone.nix +++ b/pkgs/btclone/btclone.nix @@ -1,13 +1,13 @@ '' usage() { echo "Usage: $0 <subvolume> <target> [<up-to>]" >&2; exit 1; } - + [[ $# -ge 2 && $# -le 3 && ( $# -ne 3 || $(("$3" + 0)) = "$3" ) ]] || usage [[ $UID -eq 0 ]] || { echo "$0: requires root privileges" >&2; exit 1; } - + SOURCE="$1" TARGET="$2" [ $# -ge 3 ] && UP_TO="$3" || UP_TO= - + get_snapshots() { FILTER="\$1 > 0" [[ -n "$UP_TO" ]] && FILTER="\$1 > 0 && \$1 <= $UP_TO" @@ -15,7 +15,7 @@ find "$1" -follow -maxdepth 1 -printf '%f\n' \ | sed 's@/$@@g' | awk "$FILTER { print }" | sort -n } - + clone() { if [[ -n "$2" ]]; then echo "Cloning $1 (incremental from $2)..." >&2 @@ -24,44 +24,44 @@ echo "Cloning $1 (non-incremental)..." >&2 PARENT_ARG="--" fi - + FROM="$SOURCE/$1" INTO="$TARGET/$1" - + [[ -d "$INTO" ]] || mkdir "$INTO" btrfs send "$PARENT_ARG" "$FROM/snapshot" | pv | btrfs receive "$INTO" cp -a "$FROM/info.xml" "$INTO/" } - + cleanup() { echo "Removing $1..." >&2 - + AT="$TARGET/$1" [[ -d "$AT/snapshot" ]] && btrfs subvolume delete "$AT/snapshot" rm -f "$AT/info.xml" rmdir "$AT" } - + while true; do ls -- "$SOURCE/" "$TARGET/" >/dev/null mapfile -t SNAPSHOTS < <(get_snapshots "$SOURCE") [[ ''${#SNAPSHOTS} -eq 0 ]] && { echo "$0: nothing to do" >&2; exit; } mapfile -t EXISTENT < <(get_snapshots "$TARGET") - + RESET=0 PARENT= ALL_ARE_BAD=0 for SNAPSHOT in "''${SNAPSHOTS[@]}"; do if [[ ! -e "$SOURCE/$SNAPSHOT" ]]; then echo "Notice: resetting listings due to time lapse" >&2 - + RESET=1 break elif [[ ! -s "$SOURCE/$SNAPSHOT/info.xml" ]]; then echo "Warning: skipping source $SNAPSHOT due to invalid info.xml" >&2 continue fi - + CLONE=0 if [[ ! -e "$TARGET/$SNAPSHOT" ]]; then CLONE=1 @@ -69,25 +69,25 @@ echo -n "Warning: bad copy $SNAPSHOT (" >&2 [[ $ALL_ARE_BAD -eq 1 ]] && echo -n "bad chain" >&2 || echo -n "incomplete" >&2 echo "), recreating..." >&2 - + cleanup "$SNAPSHOT" - + CLONE=1 ALL_ARE_BAD=1 fi - + if [[ $CLONE -eq 1 ]]; then clone "$SNAPSHOT" "$PARENT" elif [[ -z "$PARENT" ]]; then echo "Initial snapshot present, all copies will be incremental" >&2 fi - + chmod 750 "$TARGET/$SNAPSHOT" PARENT="$SNAPSHOT" done - + [[ $RESET -eq 1 ]] && continue - + echo "Copies updated, cleaning up..." >&2 for SNAPSHOT in "''${EXISTENT[@]}"; do FOUND="" @@ -100,9 +100,9 @@ [ -n "$FOUND" ] || cleanup "$SNAPSHOT" done - + break done - + echo "Done" >&2 '' diff --git a/pkgs/btclone/default.nix b/pkgs/btclone/default.nix index bb207ef..2484f33 100644 --- a/pkgs/btclone/default.nix +++ b/pkgs/btclone/default.nix @@ -1,6 +1,11 @@ -{ btrfs-progs, pv, writeShellApplication, ... }: +{ + btrfs-progs, + pv, + writeShellApplication, + ... +}: writeShellApplication { name = "btclone"; - runtimeInputs = [ btrfs-progs pv ]; + runtimeInputs = [btrfs-progs pv]; text = import ./btclone.nix; } |
