Gentoo Archives: gentoo-commits

From: "Ulrich Müller" <ulm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/eselect:master commit in: modules/, /
Date: Sun, 26 May 2019 15:31:00
Message-Id: 1558883623.61cb8c82e0ecb918b84a5ecdd7bf2f574bfe5212.ulm@gentoo
1 commit: 61cb8c82e0ecb918b84a5ecdd7bf2f574bfe5212
2 Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
3 AuthorDate: Sun May 26 15:13:43 2019 +0000
4 Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
5 CommitDate: Sun May 26 15:13:43 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/eselect.git/commit/?id=61cb8c82
7
8 Allow specification of news item by its name.
9
10 * modules/news.eselect (do_read, do_unread): Allow specification
11 of item by its number or name.
12 (describe_read_options, describe_unread_options): Document it.
13
14 Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
15
16 ChangeLog | 6 ++++++
17 modules/news.eselect | 42 ++++++++++++++++++++++++++++++++----------
18 2 files changed, 38 insertions(+), 10 deletions(-)
19
20 diff --git a/ChangeLog b/ChangeLog
21 index 20ecfab..bc42d2a 100644
22 --- a/ChangeLog
23 +++ b/ChangeLog
24 @@ -1,3 +1,9 @@
25 +2019-05-26 Ulrich Mueller <ulm@g.o>
26 +
27 + * modules/news.eselect (do_read, do_unread): Allow specification
28 + of item by its number or name.
29 + (describe_read_options, describe_unread_options): Document it.
30 +
31 2019-02-17 Ulrich Mueller <ulm@g.o>
32
33 * configure.ac: Update version to 1.4.14.
34
35 diff --git a/modules/news.eselect b/modules/news.eselect
36 index 5f3303b..15e5cb6 100644
37 --- a/modules/news.eselect
38 +++ b/modules/news.eselect
39 @@ -251,7 +251,7 @@ describe_read_options() {
40 echo "--raw : Output in raw format"
41 echo "new : Read unread news items (default)"
42 echo "all : Read all news items"
43 - echo "item : Number of item (from 'list' action)"
44 + echo "item : Item name or number (from 'list' action)"
45 }
46
47 describe_read_parameters() {
48 @@ -285,10 +285,21 @@ do_read() {
49 fi
50
51 for i; do
52 - if ! is_number "${i}" || [[ ${i} -lt 1 || ${i} -gt ${#items[@]} ]]
53 - then
54 - write_warning_msg "Bad item number: ${i}"
55 - continue
56 + if is_number "${i}"; then
57 + if (( i < 1 || i > n )); then
58 + write_warning_msg "Bad item number: ${i}"
59 + continue
60 + fi
61 + else
62 + # item can be specified by name
63 + item=${i}
64 + for (( i = 1; i <= n; i++ )); do
65 + [[ ${items[i-1]#*/*/} = "${item}" ]] && break
66 + done
67 + if (( i > n )); then
68 + write_warning_msg "Item not found: ${item}"
69 + continue
70 + fi
71 fi
72 item=${items[--i]}
73 stat=${item%%/*}; item=${item#*/}
74 @@ -373,7 +384,7 @@ describe_unread() {
75
76 describe_unread_options() {
77 echo "all : Mark all news items as unread"
78 - echo "item : Number of item (from 'list' action)"
79 + echo "item : Item name or number (from 'list' action)"
80 }
81
82 describe_unread_parameters() {
83 @@ -393,10 +404,21 @@ do_unread() {
84 fi
85
86 for i; do
87 - if ! is_number "${i}" || [[ ${i} -lt 1 || ${i} -gt ${#items[@]} ]]
88 - then
89 - write_warning_msg "Bad item number: ${i}"
90 - continue
91 + if is_number "${i}"; then
92 + if (( i < 1 || i > n )); then
93 + write_warning_msg "Bad item number: ${i}"
94 + continue
95 + fi
96 + else
97 + # item can be specified by name
98 + item=${i}
99 + for (( i = 1; i <= n; i++ )); do
100 + [[ ${items[i-1]#*/*/} = "${item}" ]] && break
101 + done
102 + if (( i > n )); then
103 + write_warning_msg "Item not found: ${item}"
104 + continue
105 + fi
106 fi
107 item=${items[--i]}
108 stat=${item%%/*}; item=${item#*/}