#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: categories FILENAME categories -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message FILENAME the target categories index to be built Generate FILENAME as the indexed list of articles by category. Examples: Generate the index.categories entry for english pastebins: $ categories src/en/pastebin/index.categories EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) . src/lib.sh FILENAME="${1:-}" eval "$(assert_arg "$FILENAME" 'FILENAME')" DIR="$(dirname "$FILENAME")" mkdir -p "$DIR" printf '' > "$FILENAME" find "$DIR"/*.categorysort 2>/dev/null | awk -F. '{ print $(NF-1) }' | sort | uniq | while read -r category; do find "$DIR"/*."$category".categorysort | sort -nr | xargs cat > "$DIR/$category.category" printf '%s\n' "$category" >> "$FILENAME" done