[PATCH 1/3] Add helper script to find licenses and unused files.

Christian Mauderer christian.mauderer at embedded-brains.de
Fri Mar 29 07:17:34 UTC 2019


---
 find_unused_files_and_license.sh | 106 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)
 create mode 100755 find_unused_files_and_license.sh

diff --git a/find_unused_files_and_license.sh b/find_unused_files_and_license.sh
new file mode 100755
index 00000000..0fc61fe8
--- /dev/null
+++ b/find_unused_files_and_license.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+#
+# Copyright (c) 2018 embedded brains GmbH.  All rights reserved.
+#
+#  embedded brains GmbH
+#  Dornierstr. 4
+#  82178 Puchheim
+#  Germany
+#  <rtems at embedded-brains.de>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+
+# exit on wrong command and undefined variable
+set -e
+set -u
+set -o pipefail
+
+SCRIPTNAME=$0
+TARGET="freebsd/"
+SOURCE="freebsd-org/"
+LIST="libbsd.py"
+
+printhelp () {
+	echo ""
+	echo "Call:   ${SCRIPTNAME} <options>"
+	echo "Find LICENSE files for each file in \"${TARGET}\"."
+	echo "Find all files in \"${TARGET}\" that are not in \"${LIST}\"."
+	echo "Reccomended usage:"
+	echo "./${SCRIPTNAME} | sort | uniq"
+	echo ""
+	echo "The following parameters are optional:"
+	echo "  -h          Print this help and exit the script."
+	echo "  -v          Be more verbose. Can be used multiple times."
+	exit 0
+}
+
+while getopts "hxy:v" OPTION
+do
+	case ${OPTION} in
+		h)  printhelp ;;
+		\?) echo "Unknown option \"-${OPTARG}\"."
+			exit 1 ;;
+		:)  echo "Option \"-${OPTARG}\" needs an argument."; exit 1 ;;
+	esac
+done
+shift $((${OPTIND} - 1))
+
+checkfile () {
+	local FILE="$1"
+	local FILE_WITHOUT_PATH=${FILE#"$TARGET"}
+	local LICENSE=""
+
+	grep "${FILE_WITHOUT_PATH}" "${LIST}" > /dev/null || \
+	    echo "File not in ${LIST}: ${FILE_WITHOUT_PATH}"
+
+	local DIR="${SOURCE}`dirname ${FILE_WITHOUT_PATH}`"
+	while [ "$DIR" != "." ]
+	do
+		local MAYBELICENSE="${DIR}/LICENSE*"
+		if [ -e ${MAYBELICENSE} ]
+		then
+			LICENSE=`ls ${MAYBELICENSE}`
+			break
+		fi
+		local MAYBELICENSE="${DIR}/COPY*"
+		if [ -e ${MAYBELICENSE} ]
+		then
+			LICENSE=`ls ${MAYBELICENSE}`
+			break
+		fi
+		DIR="`dirname ${DIR}`"
+	done
+
+	if [ "${LICENSE}" != "" ]
+	then
+		echo "License file found: ${LICENSE}"
+	fi
+}
+
+export -f checkfile
+export TARGET
+export SOURCE
+export LIST
+
+find ${TARGET} -name "*\.[ch]" -exec bash -c 'checkfile "$0"' {} \;
-- 
2.13.7




More information about the devel mailing list