[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