#!/bin/bash # xchangelog PKGNAME - open package changelog XBPS_DISTDIR=$(xdistdir) || exit 1 FILTER=cat pkg=$1 [ -z "$pkg" ] && pkg=$(basename "$PWD") if [ -f "$pkg" ]; then template="$pkg" elif [ -f "$pkg/template" ]; then template="$pkg/template" elif [ -f "$XBPS_DISTDIR/srcpkgs/$pkg/template" ]; then template="$XBPS_DISTDIR/srcpkgs/$pkg/template" else echo "No such template: $pkg" >&2 exit 1 fi . "$template" if [ -z "$changelog" ]; then echo "No changelog defined in template" >&2 exit 1 fi if [ -t 1 ]; then if type less >/dev/null; then : "${PAGER:=less -r}" fi content_type="$(curl -sLI -w "%{content_type}" -o /dev/null -- "$changelog")" case "$content_type" in "text/plain"*) if [[ "$changelog" = *".md" ]] && type mdcat >/dev/null; then FILTER="mdcat" elif [[ "$changelog" = *".rst" ]] && type rst2ansi >/dev/null; then FILTER="rst2ansi" fi ;; "text/markdown"*) if type mdcat >/dev/null; then FILTER="mdcat" fi ;; *) if type xdg-open >/dev/null; then xdg-open "$changelog" elif [ -n "$BROWSER" ]; then "$BROWSER" "$changelog" else echo 'Cannot open changelog in web browser, please install xdg-open or define $BROWSER' >&2 exit 1 fi exit 0 ;; esac else : "${PAGER:=cat}" fi curl -sL -- "$changelog" | $FILTER | $PAGER