[PATCH 3/9] Add has-spdx-header.sh script

Jonathan Wakely jwakely@redhat.com
Fri Jul 10 17:08:56 GMT 2020


Do I really need to reply to all 9 patches and sign off on them?

That means I have to actually review things like the script below,
which isn't code I've contributed to, so I have no concerns about you
adding this script under whatever license you want.

But since you asked for it ...


On 10/07/20 16:07 +0200, Dodji Seketeli wrote:
>Add a script to detect if a file has a SPDX header and what the
>advertised license is.
>
>	   * relicensing-scripts/has-spdx-header.sh: New script.
>
>Signed-off-by: Dodji Seketeli <dodji@redhat.com>
>---
> relicensing-scripts/has-spdx-header.sh | 102 +++++++++++++++++++++++++++++++++
> 1 file changed, 102 insertions(+)
> create mode 100755 relicensing-scripts/has-spdx-header.sh
>
>diff --git a/relicensing-scripts/has-spdx-header.sh b/relicensing-scripts/has-spdx-header.sh
>new file mode 100755
>index 0000000..c2b0eca
>--- /dev/null
>+++ b/relicensing-scripts/has-spdx-header.sh
>@@ -0,0 +1,102 @@
>+#!/bin/sh
>+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
>+# Author: Dodji Seketeli <dodji@redhat.com>
>+
>+file=
>+prog=$0
>+display_file_name=
>+be_quiet=
>+show_no_spdx=
>+
>+display_usage()
>+{
>+    echo "$prog: [options] file"
>+    echo "  where options can be:"
>+    echo "   -h|--help		display this help"
>+    echo "   -f|--file		prefix output with file name"
>+    echo "   -q|--quiet		emit no output if no license was found"
>+    echo "   --show-no-spdx	show file name if it has no spdx header"
>+}
>+
>+emit_output_no_license()
>+{
>+    if test x$show_no_spdx != x; then
>+	echo $display_file_name
>+    elif test x$be_quiet = x; then
>+	if test "x$display_file_name" = x; then
>+	    echo "NO-LICENSE"
>+	else
>+	    echo "$display_file_name: NO-LICENSE"
>+	fi
>+    fi
>+
>+    exit 1
>+}
>+
>+emit_output_with_license()
>+{
>+    license=$1
>+    if test x$show_no_spdx != x; then
>+	:
>+    elif test "x$display_file_name" = x; then
>+	echo "$license"
>+    else
>+	echo "$display_file_name: $license"
>+    fi
>+    exit 0
>+}
>+
>+main()
>+{
>+    header=$(head --lines=5 $file | grep "SPDX-License-Identifier:")
>+    if test "x$header" != x; then
>+	license=$(echo "$header" | sed -r "s/^.*(SPDX-License-Identifier:)[ 	]*([^*/]+).*$/\2/")
>+    fi

The separate grep seems unnecessary.

license=$(head --lines=5 $file | sed -n -E "s/^.*(SPDX-License-Identifier:)[ 	]*([^*/]+).*$/\2/p")

The -E option is the POSIX version of -r.

The -n option and the 'p' suffix means only the matching line will be
printed.

>+
>+    if test "x$license" = x; then
>+	emit_output_no_license
>+    else
>+	emit_output_with_license "$license"
>+    fi
>+}
>+
>+while test $# -ge 1
>+do
>+    case "$1" in
>+	-h|--help)
>+	    display_usage
>+	    exit 1

Shouldn't it exit with status 0 when asked to print the usage?

>+	    ;;
>+
>+	-f|--file)
>+	    if test x$2 = x; then
>+		display_usage

Should usage be printed to stderr when exiting with an error?

>+		exit 1
>+	    fi
>+	    display_file_name=$2
>+	    ;;
>+
>+	-q|--quiet)
>+	    be_quiet=yes
>+	    ;;
>+
>+	--show-no-spdx)
>+	    if test x$2 = x; then
>+		display_usage
>+		exit 1
>+	    fi
>+	    show_no_spdx=yes
>+	    display_file_name=$2
>+	    ;;
>+    esac
>+    shift
>+done
>+
>+if test $# -lt 1; then
>+    display_usage
>+    exit 1
>+fi
>+
>+file=$1
>+
>+main
>-- 
>1.8.3.1
>
>
>-- 
>		Dodji
>



More information about the Libabigail mailing list