Lines 15-32
Link Here
|
15 |
# read list of news items |
15 |
# read list of news items |
16 |
# list of parameters may contain "unread" or "read" |
16 |
# list of parameters may contain "unread" or "read" |
17 |
# returns one item per line: status/repository/name |
17 |
# returns one item per line: status/repository/name |
18 |
# sort order: 1. "unread" before "read", 2. by repository |
18 |
# sort order: by item name |
19 |
find_items() { |
19 |
find_items() { |
20 |
local stat repos=$(get_repositories) repo item |
20 |
local -a items repos=$(get_repositories) |
|
|
21 |
local stat repo item key i |
22 |
|
21 |
for stat in "$@"; do |
23 |
for stat in "$@"; do |
22 |
for repo in ${repos}; do |
24 |
for repo in ${repos}; do |
23 |
file="${ROOT}${NEWS_DIR}/news-${repo}.${stat}" |
25 |
file="${ROOT}${NEWS_DIR}/news-${repo}.${stat}" |
24 |
[[ -f ${file} ]] || continue |
26 |
[[ -f ${file} ]] || continue |
25 |
for item in $(<"${file}"); do |
27 |
for item in $(<"${file}"); do |
26 |
echo "${stat}/${repo}/${item}" |
28 |
# sort by item name. straight insertion sort. |
|
|
29 |
for ((i=${#items[@]}; i>0; i--)); do |
30 |
key=${items[i-1]#*/} |
31 |
[[ ${item} < ${key#*/} ]] || break |
32 |
items[i]=${items[i-1]} |
33 |
done |
34 |
items[i]=${stat}/${repo}/${item} |
27 |
done |
35 |
done |
28 |
done |
36 |
done |
29 |
done |
37 |
done |
|
|
38 |
|
39 |
for item in "${items[@]}"; do |
40 |
echo "${item}" |
41 |
done |
30 |
} |
42 |
} |
31 |
|
43 |
|
32 |
# write list of items to file |
44 |
# write list of items to file |
Lines 256-262
Link Here
|
256 |
# expand special values "new" and "all" |
268 |
# expand special values "new" and "all" |
257 |
if [[ $# -eq 0 || $1 = new || $1 = all ]]; then |
269 |
if [[ $# -eq 0 || $1 = new || $1 = all ]]; then |
258 |
for (( i = 1; i <= n; i++ )); do |
270 |
for (( i = 1; i <= n; i++ )); do |
259 |
[[ $1 = all || ${items[i-1]%%/*} = unread ]] || break |
271 |
[[ $1 = all || ${items[i-1]%%/*} = unread ]] || continue |
260 |
seq="${seq} ${i}" |
272 |
seq="${seq} ${i}" |
261 |
done |
273 |
done |
262 |
set -- ${seq} |
274 |
set -- ${seq} |