From c0996cd7c6d88486dfdaafb61b518134e4371fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20Nizio?= Date: Thu, 26 Apr 2012 00:50:57 +0200 Subject: [PATCH] Extend eread to allow sorting (bug 413577). --- bin/eread | 36 ++++++++++++++++++++++++++++++++++-- man/eread.1 | 13 +++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/bin/eread b/bin/eread index 7d0a970..381a8ed 100755 --- a/bin/eread +++ b/bin/eread @@ -5,6 +5,7 @@ # # Author: Donnie Berkholz # Updated by: Uwe Klosa +# Updated by: Slawomir Nizio # Get prefix EPREFIX=${EPREFIX:-$(portageq envvar EPREFIX)} @@ -30,9 +31,34 @@ fi # Set up select prompt PS3="Choice? " +SORT=${EREAD_SORT_ORDER} + +find_unsorted() { + find . -type f | sed -e "s:\./::g" +} +find_by_name() { + find . -type f | sort | sed -e "s:\./::g" +} +find_by_time() { + find . -type f | awk -F: '{print $3,$1":"$2":"$3}' | sort \ + | awk '{print $2}' | sed -e "s:\./::g" +} +find_files() { + case ${SORT} in + alphabet) + find_by_name + ;; + time) + find_by_time + ;; + *) + find_unsorted + ;; + esac +} + select_loop() { - ANY_FILES=$(find . -type f) - ANY_FILES=$(echo ${ANY_FILES} | sed -e "s:\./::g") + ANY_FILES=$(find_files) if [[ -z ${ANY_FILES} ]]; then echo "No log items to read" @@ -51,6 +77,12 @@ select_loop() { QUIT="yes" break ;; + a) + SORT="alphabet" + ;; + t) + SORT="time" + ;; *) if [ -f "$FILE" ]; then ${PAGER} ${FILE} diff --git a/man/eread.1 b/man/eread.1 index 5e18214..b96892e 100644 --- a/man/eread.1 +++ b/man/eread.1 @@ -8,5 +8,18 @@ eread .SH "DESCRIPTION" .LP This tool is used to display and manage ELOG files produced by portage version 2.1 and higher. +.SH "USAGE" +.LP +You can use the following commands: +.TP +.B "q" +Quit +.TP +.B "a" +Sort alphabetically +.TP +.B "t" +Sort by date .SH "ENVIRONMENT VARIABLES" The eread utility uses the PAGER environment variable to display the ELOG files. If the variable is not set, it defaults to /usr/bin/less. +Another environment variable is EREAD_SORT_ORDER which can be set to specify default sort order of ELOG files. Values \fBalphabet\fP and \fBtime\fP are recognized. If EREAD_SORT_ORDER is not set or has another value, the output is unsorted. -- 1.7.8.4