From patchwork Sat Mar 27 18:22:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Parks X-Patchwork-Id: 1885 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.17) for (single-drop); Sat, 27 Mar 2021 18:23:18 +0000 (UTC) Received: from mail.archlinux.org by mail.archlinux.org with LMTP id MEWzIhV4X2AIawAAK+/4rw (envelope-from ) for ; Sat, 27 Mar 2021 18:23:17 +0000 Received: from luna.archlinux.org (luna.archlinux.org [5.9.250.164]) (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 09C464B204E; Sat, 27 Mar 2021 18:23:16 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id A1B6F2B77B; Sat, 27 Mar 2021 18:23:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.archlinux.org; s=luna; t=1616869396; bh=nlwKeNvN4svfAbAcmU1heJDgFUtpo6DNTgZzckUFUhk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc; b=UFdF5P6k1W5fNm/yhaqiDJ4RiquYGmlfxISbCTfx/vgJ4oxc4qbPXPrmxtqP5lXlN cxTH4eRXDwiWFS30992qgMQ1fQtynONQe2lq1KuMGMo1f8eQUFHNYcEfBNbDXgjWmi 7nSbJcXCQQpiki+HU/Qajvd6FYDMnnDP5sfKXvsEGTpqY24h9/M9qA/eM83Qz0PTMA INWpGzFTQ3dI/qyYpS7f6ScGRQpBGGJbOWV7qbnbuiLSzbIaLHSrtTMMeXHdDVHbA+ SQreLsfB+U00GixW35SIY59IZCMBUUfaAG6U3nz32DukdwRTlLLtbSgD/QzV2w/BjF /m+DfEgLP/D6vIIxtsDl+BW9ChjIK/puvZ3FamFFTN805ubdrmv7Fp/+yIqslHbdA2 2y25iazl5f/raRXoCNJU2WMy8/uD2h/Mh5dSZnB/wcxRcstoba5uDEhNqm3sZU3Ocd Xupdnu9O8EvI66sxn936Bm97Cjn4CO9TzFok6w8LsPGIGzRkIzoCABq3TnR6yfxx3D cH8lopqj1vS0sbzGp4Zv9nDJ+ow9r53yCBmqBm3Xi0TAnw7e5nfY7uHguKMezybORX 9TC35OuRlGoYyuy+XdVpqUQsFPt6O/EjrBA+H3CqYM0PtetCHbSdTmx/q1dZj41+Ta sjCx2IcNdTyICz2k1y7qgooo= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 75C2F2B779 for ; Sat, 27 Mar 2021 18:23:13 +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-oo1-xc32.google.com (mail-oo1-xc32.google.com [IPv6:2607:f8b0:4864:20::c32]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sat, 27 Mar 2021 18:23:13 +0000 (UTC) Received: by mail-oo1-xc32.google.com with SMTP id r17-20020a4acb110000b02901b657f28cdcso2066402ooq.6 for ; Sat, 27 Mar 2021 11:23:13 -0700 (PDT) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=WBZVjmakCx7npgUS3NGd1+hhnebgo19kJSvjxmJjD7U=; b=W+22+en9yFzL+l/PB96oiYNkOUxCiXOB9vz4NW1QstT2HqlHzT+voLGXqJcG1LDBxS bbwhyTaXkybIKqqNAsFcBfj9cAlJlE6Pju0lDg4PbeoM0Cal+K8lm0DSrtb/QrGDy/Ya ayQoGdcBglfBoriUPM4wFrSiy8/JGGi6OCSyqx7HKifA5VOchEWZO6t5iI/AgZTR/+OO MonI8GegHdeVbb9jkyRZZ7ZjLwVwJ7/+K6kApIesv6NJgpXJpu7XvkIIqq25O0hSO7RY q9GTuHf5urHGquWmkEwvFzDTbFW8gkgXCQKUsCsaSwNllYq9vv0zwprIhC+RYZ7Ce1Yj xkEw== X-Gm-Message-State: AOAM533XUiaPpb8RVOdBiibzCeUXJcBm42M9ICWSRg0naNuAYYzfX2uz D9oUUkGPEfQ5FibBIWkby8QUoldAvxNM+g== X-Google-Smtp-Source: ABdhPJwQXVHiXYAFiLEHLLTzolQ3Mxk/V51yNo4EkzTRoX/c58Gyh6qgJFZtPU2ctseOaPw6t4gHgQ== X-Received: by 2002:a4a:4005:: with SMTP id n5mr16108034ooa.61.1616869390765; Sat, 27 Mar 2021 11:23:10 -0700 (PDT) Received: from archparks2.local ([2600:1700:3f7b:20f:96ac:9153:ef6c:e7e3]) by smtp.googlemail.com with ESMTPSA id e4sm2435567oie.23.2021.03.27.11.23.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Mar 2021 11:23:10 -0700 (PDT) To: pacman-contrib@lists.archlinux.org Subject: [PATCH] pacdiff: Add option to use sudo/sudoedit to manage files Date: Sat, 27 Mar 2021 13:22:11 -0500 Message-Id: <20210327182210.19257-1-danielrparks@gmail.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: References: 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=UFdF5P6k; dmarc=pass (policy=none) header.from=archlinux.org; spf=pass (mail.archlinux.org: domain of pacman-contrib-bounces@lists.archlinux.org designates 5.9.250.164 as permitted sender) smtp.mailfrom=pacman-contrib-bounces@lists.archlinux.org X-Rspamd-Queue-Id: 09C464B204E 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)[+ip4:5.9.250.164]; 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:5.9.0.0/16, 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. Signed-off-by: Daniel Parks --- 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";