#!/bin/bash
#

# Copyright (C) 2013 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.

set -e -u -o pipefail

# Use array for arguments so that comments can be inline
args=(
  # "...name*(8)" (missing backslash)
  -e '\w+\*+\([0-9]*\)'

  # "...name(8)" (no asterisk)
  -e '\w+\([0-9]*\)'

  # "...name(8)*" (asterisk after number)
  -e '\w+\([0-9]*\)\*'

  # "...name*\(8)" (only one asterisk before backslash)
  -e '\w+\*\\\([0-9]*\)'

  # ":manpage:..." (Sphinx-specific)
  -e ':manpage:'
  )

for fname; do
  # Ignore title and then look for faulty references
  if tail -n +2 $fname | grep -n -E -i "${args[@]}"; then
    {
      echo "Found faulty man page reference(s) in '$fname'."\
           'Use syntax "**name**\(number)" instead.'\
           'Example: **gnt-instance**\(8).'
    } >&2
    exit 1
  fi
done
