commit: 61cb8c82e0ecb918b84a5ecdd7bf2f574bfe5212 Author: Ulrich Müller <ulm <AT> gentoo <DOT> org> AuthorDate: Sun May 26 15:13:43 2019 +0000 Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org> CommitDate: Sun May 26 15:13:43 2019 +0000 URL: https://gitweb.gentoo.org/proj/eselect.git/commit/?id=61cb8c82
Allow specification of news item by its name. * modules/news.eselect (do_read, do_unread): Allow specification of item by its number or name. (describe_read_options, describe_unread_options): Document it. Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org> ChangeLog | 6 ++++++ modules/news.eselect | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 20ecfab..bc42d2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2019-05-26 Ulrich Mueller <[email protected]> + + * modules/news.eselect (do_read, do_unread): Allow specification + of item by its number or name. + (describe_read_options, describe_unread_options): Document it. + 2019-02-17 Ulrich Mueller <[email protected]> * configure.ac: Update version to 1.4.14. diff --git a/modules/news.eselect b/modules/news.eselect index 5f3303b..15e5cb6 100644 --- a/modules/news.eselect +++ b/modules/news.eselect @@ -251,7 +251,7 @@ describe_read_options() { echo "--raw : Output in raw format" echo "new : Read unread news items (default)" echo "all : Read all news items" - echo "item : Number of item (from 'list' action)" + echo "item : Item name or number (from 'list' action)" } describe_read_parameters() { @@ -285,10 +285,21 @@ do_read() { fi for i; do - if ! is_number "${i}" || [[ ${i} -lt 1 || ${i} -gt ${#items[@]} ]] - then - write_warning_msg "Bad item number: ${i}" - continue + if is_number "${i}"; then + if (( i < 1 || i > n )); then + write_warning_msg "Bad item number: ${i}" + continue + fi + else + # item can be specified by name + item=${i} + for (( i = 1; i <= n; i++ )); do + [[ ${items[i-1]#*/*/} = "${item}" ]] && break + done + if (( i > n )); then + write_warning_msg "Item not found: ${item}" + continue + fi fi item=${items[--i]} stat=${item%%/*}; item=${item#*/} @@ -373,7 +384,7 @@ describe_unread() { describe_unread_options() { echo "all : Mark all news items as unread" - echo "item : Number of item (from 'list' action)" + echo "item : Item name or number (from 'list' action)" } describe_unread_parameters() { @@ -393,10 +404,21 @@ do_unread() { fi for i; do - if ! is_number "${i}" || [[ ${i} -lt 1 || ${i} -gt ${#items[@]} ]] - then - write_warning_msg "Bad item number: ${i}" - continue + if is_number "${i}"; then + if (( i < 1 || i > n )); then + write_warning_msg "Bad item number: ${i}" + continue + fi + else + # item can be specified by name + item=${i} + for (( i = 1; i <= n; i++ )); do + [[ ${items[i-1]#*/*/} = "${item}" ]] && break + done + if (( i > n )); then + write_warning_msg "Item not found: ${item}" + continue + fi fi item=${items[--i]} stat=${item%%/*}; item=${item#*/}
