diff options
author | John Lee <john.lee@algorand.com> | 2024-01-02 17:28:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-02 17:28:13 -0500 |
commit | 6d6f028446b96b42805f5e3b516d902117dcdc30 (patch) | |
tree | eac43b207114bb7c18256b6252ef6c61ec15dcca | |
parent | 3a80a406f7b94161ce031bec00b5a82bdf9becba (diff) |
Chore: Update check_license script to update copyright year (#5888)
-rwxr-xr-x | scripts/check_license.sh | 66 |
1 files changed, 60 insertions, 6 deletions
diff --git a/scripts/check_license.sh b/scripts/check_license.sh index 51f83d7d4..f61e93396 100755 --- a/scripts/check_license.sh +++ b/scripts/check_license.sh @@ -3,8 +3,22 @@ PROJECT_ROOT=$(git rev-parse --show-toplevel) LICENSE_LOCATION="$PROJECT_ROOT"/scripts/LICENSE_HEADER NUMLINES=$(< "$LICENSE_LOCATION" wc -l | tr -d ' ') -LICENSE=$(sed "s/{DATE_Y}/$(date +"%Y")/" "$LICENSE_LOCATION") +CURRENT_YEAR=$(date +"%Y") +LICENSE=$(sed "s/{DATE_Y}/$CURRENT_YEAR/" "$LICENSE_LOCATION") VERSIONED_GO_FILES=$(git ls-tree --full-tree --name-only -r HEAD | grep "\.go$") +EXTRA_FILES=( + cmd/tealdbg/bundle_home_html.sh + crypto/memcpy_chk_windows.c + tools/x-repo-types/typeAnalyzer/main.tmpl + test/heapwatch/block_history.py + test/heapwatch/block_history_plot.py + test/heapwatch/metrics_delta.py + test/heapwatch/nodeHostTarget.py + test/heapwatch/client_ram_report.py + test/heapwatch/runNodeHost.py + test/heapwatch/block_history_relays.py + test/heapwatch/heapWatch.py +) EXCLUDE=( "Code generated by" "David Lazar" @@ -16,6 +30,7 @@ EXCLUDE=( ) FILTER=$(IFS="|" ; echo "${EXCLUDE[*]}") INPLACE=false +UPDATE=false VERBOSE=false MOD_COUNT=0 RETURN_VALUE=0 @@ -27,6 +42,7 @@ usage() { echo echo "Args:" echo "-i Edit in-place." + echo "-u Update license to current year." echo "-v Verbose, same as doing \`head -n ${NUMLINES:-15}\` on each file." echo } @@ -39,6 +55,9 @@ while [ "$1" != "" ]; do -i) INPLACE=true ;; + -u) + UPDATE=true + ;; -v) VERBOSE=true ;; -h) @@ -62,7 +81,11 @@ for FILE in $VERSIONED_GO_FILES; do RETURN_VALUE=1 if ! $VERBOSE; then - if $INPLACE; then + if $UPDATE; then + sed -i.orig s/Copyright\ \(C\)\ 2019-....\ Algorand,\ Inc\./Copyright\ \(C\)\ 2019-$CURRENT_YEAR\ Algorand,\ Inc./ "$PROJECT_ROOT/$FILE" && \ + rm "$PROJECT_ROOT/$FILE".orig + ((MOD_COUNT++)) + elif $INPLACE; then cat <(echo -e "$LICENSE\n") "$PROJECT_ROOT/$FILE" > "$PROJECT_ROOT/$FILE".1 && mv "$PROJECT_ROOT/$FILE"{.1,} ((MOD_COUNT++)) @@ -77,17 +100,48 @@ for FILE in $VERSIONED_GO_FILES; do fi done +# non-go files that include a license header +for FILE in "${EXTRA_FILES[@]}"; do + if ! grep -qs "Copyright (C) 2019-$CURRENT_YEAR Algorand, Inc." "$PROJECT_ROOT/$FILE"; then + RETURN_VALUE=1 + if ! $VERBOSE; then + if $UPDATE; then + sed -i.orig s/Copyright\ \(C\)\ 2019-....\ Algorand,\ Inc\./Copyright\ \(C\)\ 2019-$CURRENT_YEAR\ Algorand,\ Inc./ "$PROJECT_ROOT/$FILE" && \ + rm "$PROJECT_ROOT/$FILE".orig + ((MOD_COUNT++)) + fi + # It's dangerous to do inplace updates of non-go files, because their format might be different + echo "$FILE" + else + echo -e "\n${RED_FG}$FILE${END_FG_COLOR}" + <"$PROJECT_ROOT/$FILE" head -n "$NUMLINES" + echo + fi + fi +done + # check the README.md file. -READMECOPYRIGHT="Copyright (C) 2019-$(date +"%Y"), Algorand Inc." +READMECOPYRIGHT="Copyright (C) 2019-$CURRENT_YEAR, Algorand Inc." if [ "$(<README.md grep -c "${READMECOPYRIGHT}" | tr -d ' ')" = "0" ]; then RETURN_VALUE=1 - echo "README.md file need to have its license date range updated." + if ! $VERBOSE; then + if $UPDATE; then + sed -i.orig s/Copyright\ \(C\)\ 2019-....,\ Algorand\ Inc\./Copyright\ \(C\)\ 2019-$CURRENT_YEAR,\ Algorand\ Inc./ README.md && + rm README.md.orig + ((MOD_COUNT++)) + fi + echo "README.md" + else + echo -e "\n${RED_FG}README.md${END_FG_COLOR}" + grep 'Copyright (C) 2019' README.md + echo + fi fi if [ $RETURN_VALUE -ne 0 ]; then echo -e "\n${RED_FG}FAILED LICENSE CHECK.${END_FG_COLOR}" - if [ $INPLACE == "false" ]; then - echo -e "Use 'check_license.sh -i' to fix." + if [ $INPLACE == "false" ] && [ $UPDATE == "false" ]; then + echo -e "Use 'check_license -i' to install to new files, 'check_license.sh -u' to update year." else echo "Modified $MOD_COUNT file(s)." fi |