Skip to content

Commit ad589f9

Browse files
committed
Add script to correct copyright notices in .go files
[ci skip] Signed-off-by: Neil Twigg <[email protected]>
1 parent b484711 commit ad589f9

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

scripts/updateCopyrights.sh

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
# Ensure script is run at the root of a git repository
4+
git rev-parse --is-inside-work-tree &>/dev/null || { echo "Not inside a git repository"; exit 1; }
5+
6+
# Find all .go files tracked by git
7+
git ls-files "*.go" | while read -r file; do
8+
# Skip files that don't have a copyright belonging to "The NATS Authors"
9+
current_copyright=$(grep -oE "^// Copyright [0-9]{4}(-[0-9]{4})? The NATS Authors" "$file" || echo "")
10+
[[ -z "$current_copyright" ]] && continue
11+
12+
# Get the last commit year for the file
13+
last_year=$(git log --follow --format="%ad" --date=format:%Y -- "$file" | head -1)
14+
existing_years=$(echo "$current_copyright" | grep -oE "[0-9]{4}(-[0-9]{4})?")
15+
16+
# Determine the new copyright range
17+
if [[ "$existing_years" =~ ^([0-9]{4})-([0-9]{4})$ ]]; then
18+
first_year=${BASH_REMATCH[1]}
19+
new_copyright="// Copyright $first_year-$last_year The NATS Authors"
20+
elif [[ "$existing_years" =~ ^([0-9]{4})$ ]]; then
21+
first_year=${BASH_REMATCH[1]}
22+
if [[ "$first_year" == "$last_year" ]]; then
23+
new_copyright="// Copyright $first_year The NATS Authors"
24+
else
25+
new_copyright="// Copyright $first_year-$last_year The NATS Authors"
26+
fi
27+
else
28+
continue # If the format is somehow incorrect, skip the file
29+
fi
30+
31+
# Update the first line
32+
if sed --version &>/dev/null; then
33+
# Linux sed
34+
sed -i "1s|^// Copyright.*|$new_copyright|" "$file"
35+
else
36+
# BSD/macOS sed, needs -i ''
37+
sed -i '' "1s|^// Copyright.*|$new_copyright|" "$file"
38+
fi
39+
done

0 commit comments

Comments
 (0)