#!/bin/bash
set -e

LANG=en_US.UTF8
FILE_PATH=CHANGES.md

duplicated_links() {
  grep -E '^\[[^]\n]+\]: ' "$1" \
  | awk 'BEGIN {FS = ": "}; {print $1}' \
  | sort \
  | uniq -d
}

if [[ "$(duplicated_links "$FILE_PATH")" != "" ]]; then
  if [[ -t 2 ]]; then
    color=always
  else
    color=never
  fi
  {
    echo "CHANGES.md contains duplicated link definitions:"
    duplicated_links "$FILE_PATH" | while read -r link; do
      grep --color="$color" -nF "$link" "$FILE_PATH"
    done | sed -e 's/^/  /'
  } > /dev/stderr
  exit 1
fi

reached=
line_no=1
while IFS= read -r line; do
  line="${line%$'\r'}"
  if [[ ${#line} -gt 80 &&
        "$(echo -n "$line" | LANG=en_US.UTF-8 wc -m)" -gt 80 &&
        $line != *https://* &&
        $line != *http://* ]]; then
    if [[ "$reached" != "1" ]]; then
      echo 'LINE#   CONTENT'
    fi
    printf '%5d   %s\n' "$line_no" "$line"
    reached=1
  fi
  ((line_no++))
done < "$FILE_PATH" > /dev/stderr
if [[ "$reached" = "1" ]]; then
  exit 1
fi
