#!/bin/bash
set -eu

# shellcheck disable=SC2034
here="$(dirname "$0")"
pname="$(basename "$0")"
pversion='0.0'

patterns=(
    'AGPL-3|GNU AFFERO GENERAL PUBLIC LICENSE|Version 3, 19 November 2007'
    'LGPL-2.1|GNU LESSER GENERAL PUBLIC LICENSE|Version 2.1, February 1999'
    'GPL-2|GNU Library General Public|version 2 of the License'
)

license_urls=(
    'Apache-2|http://www.apache.org/licenses/LICENSE-2.0|Apache License|Version 2.0, January 2004'
)

function what_license(){
    local source_dir="$1"
    shopt -s nullglob
    for licfile in "${source_dir}"/{LICENSE,COPY}* ; do
        if grep -qs http "${licfile}" >/dev/null ; then
            sed -n -e 's-.*\(https?://[^> ]*\).*-\1-p' < "${licfile}" | while read url ; do
                for lurl in "${license_urls[@]}" ; do
                    read -d '|' abbrev url inextenso version < <(echo "${lurl}")
                    echo "${abbrev}"
                    echo "${url}"
                    echo "${inextenso}"
                    echo "${version}"
                done
            done
        fi
        for pattern in "${patterns[@]}" ; do
            read -d '|' abbrev inextenso version < <(echo "${pattern}")
            echo "${abbrev}" -- "${inextenso}" -- "${version}"
            grep "${inextenso}" <"${licfile}" | head -1 || continue
            grep "${version}"   <"${licfile}" | head -1 || continue
            return
        done
    done
    shopt -u nullglob
}

function usage(){
    printf '%s usage:\n\n' "${pname}"
    printf '\t%s [-h|--help|-V|--version]\n' "${pname}"
    # shellcheck disable=SC2016
    printf '\t%s $directory …\n' "${pname}"
    printf '\n'
}

function version(){
    printf '%s version %s\n' "${pname}" "${pversion}"
}

function main(){
    for arg ; do
        case "${arg}" in
        (-V|--version)
            version
            exit 0
            ;;
        (-h|--help)
            usage
            exit 0
            ;;
        (-*)
            printf '%s: Invalid option %s\n' "${pname}" "${arg}" 1>&2
            usage
            exit 1
            ;;
        (*)
            echo what-license "${arg}"
            what_license "${arg}"
            ;;
        esac
    done
    exit 0
}


main "$@"
# THE END #
ViewGit