| | |
| | | function usage |
| | | { |
| | | [[ -n "$1" ]] && printf "ERROR: %s\n\n" "$1" >&2 |
| | | printf "Usage: license-detector [-d] LICENSE_FILE\n" >&2 |
| | | printf "Usage: license-detector [-d] [-l LICENSE] LICENSE_FILE\n" >&2 |
| | | [[ -n "$1" ]] && exit 1 |
| | | exit 0 |
| | | } |
| | | |
| | | |
| | | DEBUG=0 |
| | | while getopts ":hd" OPT ; do |
| | | LICENSE="*" |
| | | while getopts ":hdl:" OPT ; do |
| | | case "$OPT" in |
| | | "?"|"h") usage ;; |
| | | "d") DEBUG=1 ;; |
| | | "l") LICENSE="*.$OPTARG" ;; |
| | | esac |
| | | done |
| | | shift $((OPTIND - 1)) |
| | |
| | | [[ -n "$L" ]] && L="$L OR " ; L="$L$D" |
| | | fi |
| | | |
| | | if grep -i -A 1 "GENERAL PUBLIC LICENSE" "$F" | grep -q "Version 2, June 1991" ; then |
| | | D="GPL-2.0-only" |
| | | grep -A 2 "GNU General Public License as published by the" "$F" | grep -q "or (at your option) any" && D="GPL-2.0-or-later" |
| | | [[ -n "$L" ]] && L="$L OR " ; L="$L$D" |
| | | fi |
| | | |
| | | if grep -A 1 "GNU LIBRARY GENERAL PUBLIC LICENSE" "$F" | grep -q "Version 2, June 1991" ; then |
| | | D="LGPL-2.0-only" |
| | | [[ -n "$L" ]] && L="$L OR " ; L="$L$D" |
| | | fi |
| | | |
| | | TMPFILE=$(mktemp -q) |
| | | [[ -z "$TMPFILE" ]] && printf "ERROR: Temporary file creation failed\n" >&2 && exit 1 |
| | | |
| | | typeset -A matched |
| | | for l in "$WS_TOOLS"/licenses/* ; do |
| | | for l in "$WS_TOOLS"/licenses/$LICENSE ; do |
| | | [[ -f "$l" ]] || continue |
| | | # skip filters |
| | | [[ "$l" != "${l%.filter}" ]] && continue |
| | |
| | | cat <<#EOF > "$TMPFILE" |
| | | dos2unix -ascii \\ |
| | | | tr -d '\\014' \\ |
| | | | LC_ALL=C sed -E -e 's/^[[:space:]]+\$//g' \\ |
| | | | awk '/^#/{next}/^\$/{\$0="\n"}1' ORS=' ' \\ |
| | | | sed -E -e 's/[[:space:]]+/ /g' -e 's/^ //' -e 's/ \$//' -e '/^\$/d' \\ |
| | | | LC_ALL=C sed -E -e 's/[[:space:]]+/ /g' -e 's/^ //' -e 's/ \$//' -e '/^\$/d' \\ |
| | | EOF |
| | | # Remove some reStructuredText markup |
| | | if [[ "${F%.rst}" != "$F" ]] ; then |
| | | cat <<#EOF >> "$TMPFILE" |
| | | | sed -e '/^\*\*\$/d' -e 's/^\*\*\([^*]\)/\1/' -e 's/\([^*]\)\*\*\$/\1/' -e 's/\([^*]\)\*\*\([^*]\)/\1\2/g' \\ |
| | | EOF |
| | | fi |
| | | # Apply filter if any |
| | | [[ -x "$l.filter" ]] && printf '\t| %s \\\n' "$l.filter" >> "$TMPFILE" |
| | | [[ -x "$l.filter" ]] && printf '\t| LC_ALL=C %s \\\n' "$l.filter" >> "$TMPFILE" |
| | | cat <<#EOF >> "$TMPFILE" |
| | | | LC_ALL=C tr '[:upper:]' '[:lower:]' \\ |
| | | | sed -e 's|http://|https://|g' \ |
| | | | tr ' ' '\\n' | fmt |
| | | EOF |
| | | |