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#*/} |