diff --git a/.zshrc b/.zshrc index 2e293ed..6615b35 100644 --- a/.zshrc +++ b/.zshrc @@ -168,114 +168,6 @@ function writepatch() { nvim b/$fname diff -Naru --color='auto' a/$fname b/$fname } -backup() { - local compress=0 - local src="" - - # Parse options - while getopts "z" opt; do - case $opt in - z) compress=1 ;; - *) echo "Usage: backup [-z] file_or_dir"; return 1 ;; - esac - done - shift $((OPTIND-1)) - - # Get source file/dir after option processing - src="$1" - if [ -z "$src" ]; then - echo "Error: no source specified" - return 1 - fi - - # Check if source exists - if [ ! -e "$src" ]; then - echo "Error: $src does not exist" - return 1 - fi - - # Create backup based on type and options - if [ $compress -eq 1 ]; then - tar -I zstd -cf "${src}.tar.zstd" "$src" - elif [ -d "$src" ]; then - cp -r "$src" "${src}.bak.d" - else - cp "$src" "${src}.bak" - fi -} -restore() { - local remove=0 - - # Parse options - while getopts "r" opt; do - case $opt in - r) remove=1 ;; - *) echo "Usage: restore [-r] backup_file"; return 1 ;; - esac - done - shift $((OPTIND-1)) - - # Check if argument was provided - local src="$1" - if [ -z "$src" ]; then - echo "Error: no backup file specified" - echo "Usage: restore [-r] backup_file" - return 1 - fi - - # Check if source exists - if [ ! -e "$src" ]; then - echo "Error: $src does not exist" - return 1 - fi - - # Function to handle overwrite confirmation - confirm_overwrite() { - echo -n "$1 already exists. Overwrite? [y/N] " - read answer - [[ $answer =~ ^[Yy] ]] - return $? - } - - # Determine backup type and restore accordingly - if [[ "$src" == *.tar.zstd ]]; then - local dest="${src%.tar.zstd}" - if [ -e "$dest" ]; then - if ! confirm_overwrite "$dest"; then - echo "Restore cancelled" - return 1 - fi - rm -rf "$dest" - fi - tar -I zstd -xf "$src" - [ $remove -eq 1 ] && rm "$src" - elif [[ "$src" == *.bak.d ]]; then - local dest="${src%.bak.d}" - if [ -e "$dest" ]; then - if ! confirm_overwrite "$dest"; then - echo "Restore cancelled" - return 1 - fi - rm -rf "$dest" - fi - cp -r "$src" "$dest" - [ $remove -eq 1 ] && rm -rf "$src" - elif [[ "$src" == *.bak ]]; then - local dest="${src%.bak}" - if [ -e "$dest" ]; then - if ! confirm_overwrite "$dest"; then - echo "Restore cancelled" - return 1 - fi - rm -f "$dest" - fi - cp "$src" "$dest" - [ $remove -eq 1 ] && rm "$src" - else - echo "Error: $src is not a recognized backup format" - return 1 - fi -} ### ---- zsh options -------------------------------------