diff options
author | Daniel M. Capella <polyzen@archlinux.org> | 2022-06-24 09:13:58 +0000 |
---|---|---|
committer | Daniel M. Capella <polyzen@archlinux.org> | 2022-06-24 09:13:58 +0000 |
commit | 7636cf4deca1b0f7e9ffc1a2c9959f798e43cace (patch) | |
tree | ce390f082a2ae545ad9ac04dcdf9ce1a1b553926 | |
parent | 80d54860d59bc0ba16c4217a4b3c8cacdb0ec115 (diff) | |
parent | 9341c921564ac44e95b78db967dbc400b5f4c91e (diff) |
Merge branch 'pacdiff-backup-option' into 'master'
pacdiff: add backup option
Closes #19
See merge request pacman/pacman-contrib!17
-rw-r--r-- | CHANGES.md | 1 | ||||
-rw-r--r-- | completions/zsh/_pacdiff | 1 | ||||
-rw-r--r-- | doc/pacdiff.8.adoc | 3 | ||||
-rw-r--r-- | src/pacdiff.sh.in | 12 |
4 files changed, 15 insertions, 2 deletions
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] ### Added +- pacdiff: Add backup option to save old files (.bak) when (O)verwriting ### Changed diff --git a/completions/zsh/_pacdiff b/completions/zsh/_pacdiff index c936c87..1b5546e 100644 --- a/completions/zsh/_pacdiff +++ b/completions/zsh/_pacdiff @@ -13,6 +13,7 @@ args=( '--nocolor[remove colors from output]' '(-o --output)'{-o,--output}'[print files instead of merging them]' '(-s --sudo)'{-s,--sudo}'[use sudo and sudoedit to merge/remove files]' + '(-b --backup)'{-b,--backup}'[when overwriting, save old files with .bak]' '(-)'{--help,-h}'[display help message]' '(-)--version[display version]' ) diff --git a/doc/pacdiff.8.adoc b/doc/pacdiff.8.adoc index 3f7affd..cb291ac 100644 --- a/doc/pacdiff.8.adoc +++ b/doc/pacdiff.8.adoc @@ -53,6 +53,9 @@ Options *-s, \--sudo*:: Use sudo and sudoedit to merge/remove files. +*-b, \--backup*:: + When overwriting, save old files with .bak. + See Also -------- linkman:pacman[8], linkman:pacman.conf[5] diff --git a/src/pacdiff.sh.in b/src/pacdiff.sh.in index 9ed7492..526ccf3 100644 --- a/src/pacdiff.sh.in +++ b/src/pacdiff.sh.in @@ -32,7 +32,7 @@ cachedir= USE_COLOR='y' SUDO='' declare -a oldsaves -declare -i USE_FIND=0 USE_LOCATE=0 USE_PACDB=0 OUTPUTONLY=0 +declare -i USE_FIND=0 USE_LOCATE=0 USE_PACDB=0 OUTPUTONLY=0 BACKUP=0 # Import libmakepkg source "$LIBRARY"/util/message.sh @@ -61,6 +61,7 @@ General Options: -c/--cachedir <dir> scan "dir" for 3-way merge base candidates. (default: read from @sysconfdir@/pacman.conf) -s/--sudo use sudo and sudoedit to merge/remove files + -b/--backup when overwriting, save old files with .bak Environment Variables: DIFFPROG override the merge program: (default: 'vim -d') @@ -187,6 +188,8 @@ while [[ -n "$1" ]]; do cachedir="$2"; shift;; -s|--sudo) SUDO=sudo;; + -b|--backup) + BACKUP=1;; -V|--version) version; exit 0;; -h|--help) @@ -267,7 +270,12 @@ while IFS= read -u 3 -r -d '' pacfile; do case $c in q|Q) exit 0;; r|R) $SUDO rm -v "$pacfile"; break ;; - o|O) $SUDO mv -v "$pacfile" "$file"; break ;; + o|O) + if (( BACKUP )); then + $SUDO mv -v "$file" "$file.bak" + fi + $SUDO mv -v "$pacfile" "$file" + break ;; v|V) if [[ -n "$SUDO" ]]; then SUDO_EDITOR="$diffprog" sudoedit "$pacfile" "$file" |