Updated copyright script and added it to CI

This commit is contained in:
2025-08-04 10:59:08 +03:00
parent 5f78dd182d
commit 558755e027
3 changed files with 51 additions and 18 deletions

View File

@@ -58,6 +58,9 @@
echo "running ci..."
bash tools/copyright.sh --check
echo "Copyrigh check passed"
test -z "$(go fmt ./...)"
echo "formatting passed"
@@ -81,7 +84,7 @@
version = version;
vendorHash = vendorHash;
src = src;
buildInputs = [ pkgs.goose pkgs.go-tools pkgs.gosec ];
buildInputs = with pkgs; [ goose go-tools gosec ];
ldflags = ldflags;
modRoot = "./.";
subPackages = [ "cmd/server" ];
@@ -91,6 +94,9 @@
echo "running ci..."
bash tools/copyright.sh --check
echo "Copyrigh check passed"
test -z "$(go fmt ./...)"
echo "formatting passed"

View File

@@ -4,6 +4,7 @@ set -e
trap 'echo "❌ Check failed"; exit 1' ERR
./tools/copyright.sh --check
test -z "$(go fmt ./...)"
staticcheck ./...
go test --cover ./...

View File

@@ -1,9 +1,12 @@
#!/usr/bin/env bash
# AGPLv3 header template
START_YEAR=2025
# Get current year
CURRENT_YEAR=$(date +%Y)
HEADER="// Eko: A terminal based social media platform
// Copyright (C) $START_YEAR Kyren223
// Copyright (C) $CURRENT_YEAR Kyren223
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
@@ -21,17 +24,20 @@ HEADER="// Eko: A terminal based social media platform
# List of paths to exclude (files or directories)
EXCLUDE_PATHS=("internal/data" "tools/test_rate_limit.go")
MODIFIED=false
CHECK_MODE=false
if [[ "$1" == "--check" ]]; then
CHECK_MODE=true
fi
# Check if .go files exist recursively
if ! find . -type f -name "*.go" | grep -q .; then
echo "No .go files found in the current directory or subdirectories."
exit 1
fi
# Get current year
CURRENT_YEAR=$(date +%Y)
# Apply header to all .go files recursively, excluding specified paths
find . -type f -name "*.go" | while IFS= read -r file; do
while IFS= read -r file; do
# Check if file or its parent directories are in EXCLUDE_PATHS
skip=false
for exclude in "${EXCLUDE_PATHS[@]}"; do
@@ -42,20 +48,40 @@ find . -type f -name "*.go" | while IFS= read -r file; do
done
if [ "$skip" = true ]; then
echo "Skipped $file (in excluded path)"
if [ $CHECK_MODE = false ]; then
echo "Skipped $file (in excluded path)"
fi
continue
fi
# Skip if file already has Copyright in the first 10 lines
if ! head -n 10 "$file" | grep -q "Copyright"; then
# Prepend header with a single newline, preserving original content
{ echo "$HEADER"; echo; cat "$file"; } > "$file.tmp" && mv "$file.tmp" "$file"
echo "Added license header to $file"
else
# Update year in the header if needed and current year differs
if [ "$CURRENT_YEAR" != "$START_YEAR" ] && head -n 10 "$file" | grep -q "Copyright (C) $START_YEAR"; then
sed -i "1,10s/Copyright (C) $START_YEAR/Copyright (C) $START_YEAR-$CURRENT_YEAR/" "$file"
head_block=$(head -n 10 "$file")
copyright_line=$(echo "$head_block" | grep -E 'Copyright \(C\) [0-9]{4}')
if [[ -z "$copyright_line" ]]; then
MODIFIED=true
if $CHECK_MODE; then
echo "Missing copyright: $file"
else
{ echo "$HEADER"; echo; cat "$file"; } > "$file.tmp" && mv "$file.tmp" "$file"
echo "Added license header to $file"
fi
continue
fi
# Extract the starting year
start_year=$(echo "$copyright_line" | sed -E 's/.*Copyright \(C\) ([0-9]{4})(-[0-9]{4})?.*/\1/')
if [[ "$start_year" != "$CURRENT_YEAR" ]]; then
MODIFIED=true
if $CHECK_MODE; then
echo "Needs update: $file"
else
sed -i "1,10s/Copyright (C) $start_year/Copyright (C) $start_year-$CURRENT_YEAR/" "$file"
echo "Updated year in $file"
fi
fi
done
done < <(find . -type f -name "*.go")
if $MODIFIED; then
exit 1
fi