summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel M. Capella <polyzen@archlinux.org>2022-06-24 09:13:58 +0000
committerDaniel M. Capella <polyzen@archlinux.org>2022-06-24 09:13:58 +0000
commit7636cf4deca1b0f7e9ffc1a2c9959f798e43cace (patch)
treece390f082a2ae545ad9ac04dcdf9ce1a1b553926
parent80d54860d59bc0ba16c4217a4b3c8cacdb0ec115 (diff)
parent9341c921564ac44e95b78db967dbc400b5f4c91e (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.md1
-rw-r--r--completions/zsh/_pacdiff1
-rw-r--r--doc/pacdiff.8.adoc3
-rw-r--r--src/pacdiff.sh.in12
4 files changed, 15 insertions, 2 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 83e24e0..46574ba 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -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"