[PATCH] pacdiff: Add option to use sudo/sudoedit to manage files

Daniel M. Capella polyzen at archlinux.org
Sun Mar 28 06:44:01 UTC 2021


On March 27, 2021 2:22:11 PM EDT, Daniel Parks via pacman-contrib <pacman-contrib at lists.archlinux.org> wrote:
> This allows the user to run their diff program as their own user
> instead
> of root. The advantage of this approach is that they can use their own
> configuration for the editor or even use a GUI merge program such as
> meld.
> 
> Signed-off-by: Daniel Parks <danielrparks at gmail.com>
> ---
>  src/pacdiff.sh.in | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/src/pacdiff.sh.in b/src/pacdiff.sh.in
> index c4dbd89..aac88c8 100644
> --- a/src/pacdiff.sh.in
> +++ b/src/pacdiff.sh.in
> @@ -28,6 +28,7 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
>  diffprog=${DIFFPROG:-'vim -d'}
>  diffsearchpath=${DIFFSEARCHPATH:-/etc}
>  USE_COLOR='y'
> +SUDO=''
>  declare -a oldsaves
>  declare -i USE_FIND=0 USE_LOCATE=0 USE_PACDB=0 OUTPUTONLY=0
>  
> @@ -50,6 +51,7 @@ Search Options:     select one (default: --pacmandb)
>  General Options:
>    -o/--output       print files instead of merging them
>    --nocolor         remove colors from output
> +  -s/--sudo         use sudo to merge/remove files
>  
>  Environment Variables:
>    DIFFPROG          override the merge program: (default: 'vim -d')
> @@ -109,6 +111,8 @@ while [[ -n "$1" ]]; do
>  			OUTPUTONLY=1;;
>  		--nocolor)
>  			USE_COLOR='n';;
> +		-s|--sudo)
> +			SUDO=sudo;;
>  		-V|--version)
>  			version; exit 0;;
>  		-h|--help)
> @@ -168,25 +172,29 @@ while IFS= read -u 3 -r -d '' pacfile; do
>  	msg "%s file found for %s" "$file_type" "$file"
>  	if [ ! -f "$file" ]; then
>  		warning "$file does not exist"
> -		rm -iv "$pacfile"
> +		$SUDO rm -iv "$pacfile"
>  		continue
>  	fi
>  
>  	if cmp -s "$pacfile" "$file"; then
>  		msg2 "Files are identical, removing..."
> -		rm -v "$pacfile"
> +		$SUDO rm -v "$pacfile"
>  	else
> 		ask "(V)iew, (S)kip, (R)emove %s, (O)verwrite with %s, (Q)uit:
> [v/s/r/o/q] " "$file_type" "$file_type"
>  		while read c; do
>  			case $c in
>  				q|Q) exit 0;;
> -				r|R) rm -v "$pacfile"; break ;;
> -				o|O) mv -v "$pacfile" "$file"; break ;;
> +				r|R) $SUDO rm -v "$pacfile"; break ;;
> +				o|O) $SUDO mv -v "$pacfile" "$file"; break ;;
>  				v|V)
> -					$diffprog "$pacfile" "$file"
> +					if [[ -n "$SUDO" ]]; then
> +						SUDO_EDITOR="$diffprog" sudoedit "$pacfile" "$file"
> +					else
> +						$diffprog "$pacfile" "$file"
> +					fi
>  					if cmp -s "$pacfile" "$file"; then
>  						msg2 "Files are identical, removing..."
> -						rm -v "$pacfile"
> +						$SUDO rm -v "$pacfile"
>  						break
>  					fi
> 					ask "(V)iew, (S)kip, (R)emove %s, (O)verwrite with %s, (Q)uit:
> [v/s/r/o/q] " "$file_type" "$file_type";

Thank you. Rebased, added support for the new merge feature, and pushed.

--
Best,
Daniel <https://danielcapella.com>


More information about the pacman-contrib mailing list