From patchwork Sat Feb 20 20:22:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Parks X-Patchwork-Id: 1876 Return-Path: Delivered-To: patchwork@archlinux.org Received: from mail.archlinux.org [95.216.189.61] by patchwork.archlinux.org with IMAP (fetchmail-6.4.16) for (single-drop); Sat, 20 Feb 2021 20:30:28 +0000 (UTC) Received: from mail.archlinux.org by mail.archlinux.org with LMTP id oCTgI2NxMWDXVQMAK+/4rw (envelope-from ) for ; Sat, 20 Feb 2021 20:30:27 +0000 Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits)) (No client certificate requested) by mail.archlinux.org (Postfix) with ESMTPS id EFE2540C12E; Sat, 20 Feb 2021 20:30:26 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id A1EA82C7CC; Sat, 20 Feb 2021 20:30:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.archlinux.org; s=luna; t=1613853026; bh=kvFH6RH7J1GlqR8Tgr+04R5U02jFEMXnKxndQfXnN4E=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc; b=HwUREe0xtWVrYaBDS/6XKG/mCM4txavaguOFpjRA68FlgRjpJwcoBsvEWhYOT6wfX sKBLHm51oiXQ2eh/qltpIGtvc8WLY/1wVNVPdtQi0CW5V0rfO9BuDIPdXiK3isG6rh 9Do8qVP+GrWMH32C94FT5unz3yIv7hxNPi1AOfeieTMIJSo/vdbT99XI/hfkpfrHAa wT8ZSApoCzsYafMDkiZpIaKX3QZaVTQ5PJIunOwtr74qI3gUgWep6GuklQgAnZq2qu nb2jPGAogyoIhRKyMkP7weQPWAZdbLIeDAP3ADEYFqHuv1bJLWpKBFqzkMsKEHworH iaqQyp4C7By6LoNOtljgEp1dmS+vn4zgKFB76l9GEW0oZcPn33dOWfxgQG5iMClRE9 l7pK0wxdLqiq/5dWVrjXcbRhGc5IRjk+hJLbNImzSviWFSjVD8MhAg6KpGs+prZQa9 2XlmxIINw8a6zCt3kzcqWt7axnOvQFs6lKv2zSHVn6dd74nHRDEDbvYRm6AgtG50TL +wsvqs/0P5AXwNiVeXmNX+7Ym33CIS5CCjD+SW2oyyaSvjGvFypduJEClpDYw2FdXz h3VwWhbh4+glcuNRCwx7ne9oiAbFaPo/iV9k3ndGydy8tWC8y+cl7ua5Fq9dR2wJ2O TaB/IKYm/+ALw/PhzQNRVJKk= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 378552C7CC for ; Sat, 20 Feb 2021 20:23:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on luna.archlinux.org X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=DKIM_SIGNED=0.1, DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,FREEMAIL_FROM=0.5, RCVD_IN_DNSWL_NONE=-0.0001,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01,T_DMARC_SIMPLE_DKIM=0.01 autolearn=no autolearn_force=no version=3.4.4 X-Spam-BL-Results: [127.0.5.0] Received: from mail-ot1-x331.google.com (mail-ot1-x331.google.com [IPv6:2607:f8b0:4864:20::331]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sat, 20 Feb 2021 20:23:09 +0000 (UTC) Received: by mail-ot1-x331.google.com with SMTP id v16so8427445ote.12 for ; Sat, 20 Feb 2021 12:23:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XGK7ZLLW1D29+J1PhgRXJ1nycrCcqgThsFORu3Qg9/8=; b=OA/RAldrmiAWVsErgNFqLKMBpcz8+A1nEtdKJrzEneBvcEY/+3Mtx/GZsVmKjK8j9t Amyg1Fx49zXp+P7Rcmg7nYZ1g2t4ph6wAArJzzrUjjpUHCKZJzcfEAkbI6aPIMU3qJfH sABFKQfWvd7W1RtZ1zCadbnQJ+Xg6oRmOoNKoSe5iXwGfH3Xg5M5S/GMg18ozw6l2Xxv ntJDEin8VyyDQlOSrahnSE3hDIdKtqhC6OQT9Z9wQIyOwzYLKT6Yv7DC/3SOx7bZW1Yr Y9BGQbEnUl8Fsja6d6fx0/sLfwUNsBjbATochyZ3hPa2GK63gRfG9YY3aD+8LAcPpj7r 9c9g== X-Gm-Message-State: AOAM530t4KyuDzrsmXTOzM4K5nXCWfMVF6zhlXlyOxY0V8l1Qw0Ww0wT LzCF6/cPGuRLC/fwZ0RWHfY1VLYTgZ1Gig== X-Google-Smtp-Source: ABdhPJwodamVqgsl1NSxGBRizuEzqPk9Vp443nuAnTt4fAgCZCmwdPRQxdec1Nz4+9zFs3CC6z8lug== X-Received: by 2002:a9d:313:: with SMTP id 19mr11367981otv.147.1613852586122; Sat, 20 Feb 2021 12:23:06 -0800 (PST) Received: from archparks2.local (172-125-238-150.lightspeed.rcsntx.sbcglobal.net. [172.125.238.150]) by smtp.googlemail.com with ESMTPSA id e20sm2537352oob.40.2021.02.20.12.23.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Feb 2021 12:23:05 -0800 (PST) To: pacman-contrib@lists.archlinux.org Subject: [PATCH] pacdiff: Add option to use sudo/sudoedit to manage files Date: Sat, 20 Feb 2021 14:22:52 -0600 Message-Id: <20210220202251.34660-1-danielrparks@gmail.com> X-Mailer: git-send-email 2.30.1 MIME-Version: 1.0 X-BeenThere: pacman-contrib@lists.archlinux.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussion list for pacman-contrib development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Daniel Parks via pacman-contrib From: Daniel Parks Reply-To: Discussion list for pacman-contrib development Cc: Daniel Parks Errors-To: pacman-contrib-bounces@lists.archlinux.org Sender: "pacman-contrib" Authentication-Results: mail.archlinux.org; dkim=pass header.d=lists.archlinux.org header.s=luna header.b=HwUREe0x; dmarc=pass (policy=none) header.from=archlinux.org; spf=pass (mail.archlinux.org: domain of pacman-contrib-bounces@lists.archlinux.org designates 2a01:4f8:160:3033::2 as permitted sender) smtp.mailfrom=pacman-contrib-bounces@lists.archlinux.org X-Rspamd-Queue-Id: EFE2540C12E X-Spamd-Result: default: False [2.79 / 15.00]; HAS_REPLYTO(0.00)[pacman-contrib@lists.archlinux.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; R_SPF_ALLOW(-0.20)[+ip6:2a01:4f8:160:3033::2]; REPLYTO_ADDR_EQ_FROM(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; DKIM_TRACE(0.00)[lists.archlinux.org:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[archlinux.org,none]; MAILLIST(-0.20)[mailman]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:24940, ipnet:2a01:4f8::/29, country:DE]; FROM_NEQ_ENVFROM(0.00)[pacman-contrib@lists.archlinux.org,pacman-contrib-bounces@lists.archlinux.org]; ARC_NA(0.00)[]; RCVD_COUNT_FIVE(0.00)[6]; R_DKIM_ALLOW(-0.20)[lists.archlinux.org:s=luna]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[pacman-contrib@lists.archlinux.org]; HAS_LIST_UNSUB(-0.01)[]; NEURAL_HAM(-0.00)[-1.000]; FREEMAIL_CC(0.00)[gmail.com]; FORGED_SENDER_MAILLIST(0.00)[] X-Rspamd-Server: mail.archlinux.org 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. --- 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";