From 1796072e1ac3a33afc32486e9c85e2e3e91c6160 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:14:33 +0200 Subject: [PATCH 1/6] kiss: Add option to show diffs on update --- kiss | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/kiss b/kiss index 30d158d..0c77e47 100755 --- a/kiss +++ b/kiss @@ -1034,6 +1034,11 @@ pkg_updates() { # shellcheck disable=2046,2086 { IFS=:; set -- $KISS_PATH; IFS=$old_ifs; } + # Where to store repository diffs for the update. + # At the same time, create the file so updates requiring root don't + # overwrite the user's existing permissions over the log. + :> "${log_file:=$log_dir/update-$time-$pid}" + # Update each repository in '$KISS_PATH'. It is assumed that # each repository is 'git' tracked. for repo; do @@ -1065,6 +1070,7 @@ pkg_updates() { if [ -w "$PWD" ] && [ "$(id -u)" != 0 ]; then git fetch + git diff >> "$log_file" git merge else @@ -1078,12 +1084,15 @@ pkg_updates() { # case that the repository is owned by a 3rd user. ( user=$(stat -c %U "$PWD") + pull="git fetch && git diff >>'$log_file' && git merge" [ "$user" = root ] || log "Dropping permissions to $user for pull" - as_root git fetch - as_root git merge + case $su in + su) as_root "$pull" ;; + *) as_root sh -c "$pull" ;; + esac ) fi } @@ -1136,6 +1145,14 @@ pkg_updates() { log "Packages to update: ${outdated% }" + # Show a diff of each new change to the repositories. + # This spawns the user's set PAGER with a fallback to less. + [ -s "$log_file" ] && { + log "Saved update log to $log_file" + + [ "$KISS_AUDIT" ] && "${PAGER:-less}" "$log_file" + } + # Tell 'pkg_build' to always prompt before build. pkg_update=1 From 2c26450d7c82aac7b02a6fc846719b3882591beb Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:17:36 +0200 Subject: [PATCH 2/6] docs: update --- kiss.1 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kiss.1 b/kiss.1 index 8c17310..dd3d699 100644 --- a/kiss.1 +++ b/kiss.1 @@ -63,6 +63,14 @@ export KISS_RM=usr/share/doc:usr/share/gtk-doc:usr/share/info:usr/share/polkit-1 # Set it to '1' to force. export KISS_FORCE=0 +# Show diffs on system updates. +# +# This will spawn '$PAGER' (fallback to 'less') with a diff +# of each changed file in the system update. +# +# Set it to '1' to enable. +export KISS_AUDIT=0 + # Hook into kiss through a script. # # This can be used set custom CFLAGS per package, modify builds, From ac207e40ab6d05fa71785b0600fb42bfa9df6d47 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:18:14 +0200 Subject: [PATCH 3/6] docs: update --- README.md | 8 ++++++++ kiss.1 | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8133259..a8181f7 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,14 @@ export KISS_RM=usr/share/doc:usr/share/gtk-doc:usr/share/info:usr/share/polkit-1 # Set it to '1' to force. export KISS_FORCE=0 +# Show diff on system updates. +# +# This will spawn '$PAGER' (fallback to 'less') with a diff +# of each changed file in the system update. +# +# Set it to '1' to enable. +export KISS_AUDIT=0 + # Hook into kiss through a script. # # This can be used set custom CFLAGS per package, modify builds, diff --git a/kiss.1 b/kiss.1 index dd3d699..53d3213 100644 --- a/kiss.1 +++ b/kiss.1 @@ -63,7 +63,7 @@ export KISS_RM=usr/share/doc:usr/share/gtk-doc:usr/share/info:usr/share/polkit-1 # Set it to '1' to force. export KISS_FORCE=0 -# Show diffs on system updates. +# Show diff on system updates. # # This will spawn '$PAGER' (fallback to 'less') with a diff # of each changed file in the system update. From fbca8e30d968dc1ed0eda38086013cad904aa1dc Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:21:41 +0200 Subject: [PATCH 4/6] kiss: Prevent Ctrl+C or > 0 exit from pager causing kiss to abort --- kiss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kiss b/kiss index 0c77e47..f1f107a 100755 --- a/kiss +++ b/kiss @@ -1147,11 +1147,16 @@ pkg_updates() { # Show a diff of each new change to the repositories. # This spawns the user's set PAGER with a fallback to less. + # + # Disable this warning as the behavior (C may run when A is true) + # is intentional and fine. It is to prevent pager error from + # causing the package manager to abort. + # shellcheck disable=2015 [ -s "$log_file" ] && { log "Saved update log to $log_file" [ "$KISS_AUDIT" ] && "${PAGER:-less}" "$log_file" - } + } ||: # Tell 'pkg_build' to always prompt before build. pkg_update=1 From 77b90da4e25ee9af5f25da95743c4ad34d9fe073 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:29:05 +0200 Subject: [PATCH 5/6] kiss: Don't keep logs around for updates. git does this for us. --- kiss | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/kiss b/kiss index f1f107a..6aa0ce5 100755 --- a/kiss +++ b/kiss @@ -1037,7 +1037,7 @@ pkg_updates() { # Where to store repository diffs for the update. # At the same time, create the file so updates requiring root don't # overwrite the user's existing permissions over the log. - :> "${log_file:=$log_dir/update-$time-$pid}" + :> "$mak_dir/log" # Update each repository in '$KISS_PATH'. It is assumed that # each repository is 'git' tracked. @@ -1070,7 +1070,7 @@ pkg_updates() { if [ -w "$PWD" ] && [ "$(id -u)" != 0 ]; then git fetch - git diff >> "$log_file" + git diff >> "$mak_dir/log" git merge else @@ -1084,7 +1084,7 @@ pkg_updates() { # case that the repository is owned by a 3rd user. ( user=$(stat -c %U "$PWD") - pull="git fetch && git diff >>'$log_file' && git merge" + pull="git fetch && git diff >>'$mak_dir/log' && git merge" [ "$user" = root ] || log "Dropping permissions to $user for pull" @@ -1147,16 +1147,7 @@ pkg_updates() { # Show a diff of each new change to the repositories. # This spawns the user's set PAGER with a fallback to less. - # - # Disable this warning as the behavior (C may run when A is true) - # is intentional and fine. It is to prevent pager error from - # causing the package manager to abort. - # shellcheck disable=2015 - [ -s "$log_file" ] && { - log "Saved update log to $log_file" - - [ "$KISS_AUDIT" ] && "${PAGER:-less}" "$log_file" - } ||: + [ "$KISS_AUDIT" ] && "${PAGER:-less}" "$mak_dir/log" # Tell 'pkg_build' to always prompt before build. pkg_update=1 From 83f91fee62966c793705bc89c973eab5827b67ed Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Sun, 9 Feb 2020 11:33:55 +0200 Subject: [PATCH 6/6] kiss: only show diffs if file has contents --- kiss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kiss b/kiss index 6aa0ce5..f829f2f 100755 --- a/kiss +++ b/kiss @@ -1147,7 +1147,8 @@ pkg_updates() { # Show a diff of each new change to the repositories. # This spawns the user's set PAGER with a fallback to less. - [ "$KISS_AUDIT" ] && "${PAGER:-less}" "$mak_dir/log" + [ -s "$mak_dir/log" ] && [ "$KISS_AUDIT" = 1 ] && + "${PAGER:-less}" "$mak_dir/log" # Tell 'pkg_build' to always prompt before build. pkg_update=1