#!/bin/bash myuser="${1}" gettype="${2:-merged}" markmineread=false open_count=0 merge_count=0 open_notis_count=0 fcount=0 if [ "${gettype}" == "cleanup" ]; then gettype="merged" markmineread=true fi if [ "${gettype}" == "show" ]; then tea notification ls --mine exit 0 fi if [ "${gettype}" == "merged" ]; then open_noti=$(tea notification ls --mine | grep -E "^\| +[0-9]+.* Pull .* open " | sed -E 's/[ \|]/@@/g;s/@@+/@@/g;s/^@@//g;s/@@$//g') for merged_noti in $(tea notification ls --mine | grep -E "^\| +[0-9]+.* Pull .* merged " | sed -E 's/[ \|]/@@/g;s/@@+/@@/g;s/^@@//g;s/@@$//g'); do mark_read=false noti_id="$(grep -oE "^[0-9]+" <<<"${merged_noti}")" noti_pr_id="$(grep -oE '@@#[0-9]+@@' <<<"${merged_noti}" | sed -e 's/[@#]//g')" noti_repo="$(grep -oE '@[a-z0-9_.-]+.[a-z0-9_.-]+$' <<<"${merged_noti}" | sed -e 's/@//g')" pr_info=$(tea pr ls --state all --repo "${noti_repo}" | grep -E "^\| +${noti_pr_id} .* closed ") if grep -qE " closed +\| +${myuser} +\|" <<<"${pr_info}"; then if $markmineread ; then mark_read=true else let merge_count+=1 fi elif grep -qE " closed +\| +[a-zA-Z]+ [a-zA-Z]+ +\|" <<<"${pr_info}"; then mark_read=true fi if $mark_read ; then tea notification read ${noti_id} &>/dev/null fi if open_merge_noti=$(grep -q " #${noti_pr_id} " <<<"${open_noti}"); then tea notification read $(sed -E 's/^\| +([0-9]+) .*/\1/g' <<<"${open_merge_noti}") &>/dev/null fi done elif [ "${gettype}" == "open_all" ]; then open_notis=$(tea notification ls --mine | grep -E "^\| +[0-9]+.* Pull .* open " | sed -E 's/[ \|]/@@/g;s/@@+/@@/g;s/^@@//g;s/@@$//g') if [ -n "${open_notis}" ]; then open_notis_count=$(wc -l <<<"${open_notis}") fi elif [ "${gettype}" == "open" ]; then open_notis=$(tea notification ls --mine | grep -E "^\| +[0-9]+.* Pull .* open " | sed -E 's/[ \|]/@@/g;s/@@+/@@/g;s/^@@//g;s/@@$//g') for open_noti in ${open_notis}; do noti_id="$(grep -oE "^[0-9]+" <<<"${open_noti}")" noti_pr_id="$(grep -oE '@@#[0-9]+@@' <<<"${open_noti}" | sed -e 's/[@#]//g')" noti_repo="$(grep -oE '@[a-z0-9_.-]+.[a-z0-9_.-]+$' <<<"${open_noti}" | sed -e 's/@//g')" pr_info=$(tea pr ls --state all --repo "${noti_repo}" | grep -E "^\| +${noti_pr_id} .* open ") if grep -qE " open +\| +${myuser} +\|" <<<"${pr_info}"; then let open_count+=1 fi done fi i3status_state="Idle" if [ $merge_count -gt 0 ]; then i3status_state="Critical" fcount=${merge_count} elif [ $open_count -gt 0 ]; then i3status_state="Warning" fcount=${open_count} elif [ $open_notis_count -gt 0 ]; then i3status_state="Info" fcount=${open_notis_count} fi if $markmineread ; then echo "GT" else echo "{\"state\":\"${i3status_state}\", \"text\":\"${fcount}\"}" fi