| # SPDX-FileCopyrightText: Copyright 2024, Arm Limited and/or its affiliates. |
| # SPDX-License-Identifier: Apache-2.0 |
| """Pre-commit hook that checks the current year is in the Copyright header of a file. |
| |
| If the header is out of date it will print a warning. |
| """ |
| import datetime |
| import subprocess # nosec |
| |
| |
| class CopyrightHeaderChecker: |
| """Class that wraps the checker for the Copyright header.""" |
| |
| def check_files_have_updated_header(self, filenames: list) -> None: |
| """Check whether input files have the current year in the copyright string.""" |
| current_year = str(datetime.datetime.now().year) |
| for filename in filenames: |
| with open(filename, encoding="utf-8") as file: |
| first_line = file.readline() |
| second_line = file.readline() |
| if filename.endswith(".md") and current_year not in second_line: |
| print(f"WARNING: The Copyright header of {filename} is out of date!") |
| |
| if not filename.endswith(".md") and current_year not in first_line: |
| print(f"WARNING: The Copyright header of {filename} is out of date!") |
| |
| |
| if __name__ == "__main__": |
| staged_files = ( |
| subprocess.check_output(["git", "diff", "--cached", "--name-only"]) # nosec |
| .decode() |
| .splitlines() |
| ) |
| CopyrightHeaderChecker().check_files_have_updated_header(filenames=staged_files) |