phpcq/author-validation

Check if all authors of a particular file are mentioned in the copyright header.

1.5.2 2022-12-28 10:47 UTC

README

Build Status Latest Version tagged Latest Version on Packagist Installations via composer per month

Validate the author information within PHP files, composer.json, bower.json or packages.json.

This is useful to ensure that all authors (from git history) mentioned in all PHP files, the composer.json, bower.json and packages.json.

Usage

Add to your composer.json in the require-dev section:

"phpcq/author-validation": "~1.0"

Call the binary:

./vendor/bin/check-author.php

Optionally pass a path to check:

./vendor/bin/check-author.php /path/to/some/repository/also/with/subdir

Configuration

Optionally you can pass the path to a config file (defaults to .check-author.yml) which shall be used.

# Example .check-author.yml

# Map multiple authors to a single one (aliasing of contributors).
mapping:
  # original: alias
  "John Doe <john@example.org>": "John Doe <jd@example.org>"
  # or original: [multiple aliases]
  "John Doe <john@example.org>": ["John Doe <jd@example.org>", "Acme Inc <info@example.org>"]
  # or
  "John Doe <john@example.org>":
    - "John Doe <jd@example.org>"
    - "Acme Inc <info@example.org>"

# Ignore commits from these authors (equivalent to cmd line parameter --ignore=...)
ignore:
  - Build Bot <bot@example.org>

# If present, scan only these and not the whole base dir (equivalent to cmd line arguments).
# Values must either be absolute paths or relative to the current directory.
include:
  - src

# Paths to exclude from scanning (equivalent to cmd line parameter --exclude=...)
exclude:
  - Foo.php
  - /tests/*
  - */languages

# Enforce copy-left author for certain files.
copy-left:
  "John Doe <jd@example.org>": "/library"
  # or
  "John Doe <jd@example.org>": ["/library", "File.php"]
  # or
  "John Doe <jd@example.org>":
    - "File.php"
    
# Add additional author metadata. It is used by some comparator handlers when outputting diff format.
# Author metadata of the config file is prioritized over extracted metadata from the files.

metadata:
  "John Doe <jd@example.org>":
    role:     "Translator"
    homepage: "http:/www.example.org"