Skip to main content

Tool to automatically add, update, or delete multi-format copyright headers

Project description

pre-commit.ci status


cr-manager -- the Copyright Header Manager

A tool to automatically add, update, or delete multi-format copyright headers in source files.


Features

  • Add: Insert copyright headers for multiple file types.
  • Update: Force update or insert headers if missing.
  • Check: Verify the presence and correctness of headers.
  • Delete: Remove detected copyright headers from files.
  • Supports recursive directory traversal and filetype auto-detection or override.

How to Contribute


Action Modes

without any action mode specified, the default action is to add copyright headers.

OPTION DESCRIPTION
Add mode: Automatically adds copyright headers to files.
--check Check mode: Verifies file copyright status (match, mismatch, or not found).
--delete Delete mode: Removes detected copyright headers from files.
--update Update mode: Forces replacement of copyright or adds it if missing.

Add New Copyright Headers

# single file
$ cr-manager /path/to/file

# files recursively in directories
$ cr-manager --recursive /path/to/directory

# add to non-supported suffixes with supplied filetype
# -- i.e. add to .txt files as python filetype --
$ cr-manager --filetype python /path/to/file.txt

Update Existing Copyright Headers

--filetype <TYPE> can be used to force a specific filetype for the update action, overriding auto-detection.

# single file
$ cr-manager --update /path/to/file

# files recursively in directories
$ cr-manager --update --recursive /path/to/directory

Delete Existing Copyright Headers

--filetype <TYPE> can be used to force a specific filetype for the delete action, overriding auto-detection.

# single file
$ cr-manager --delete /path/to/file

# files recursively in directories
$ cr-manger --delete --recursive /path/to/directory

Debug Mode

# *add* without modifying files
$ cr-manager --debug /path/to/file

# *update* without modifying files
$ cr-manager --update --debug /path/to/file

# *delete* without modifying files
$ cr-manager --delete --debug /path/to/file

Supported File Types and Formats

FILETYPE SUFFIXES
python, shell, bash, sh, dockerfile .py, .sh, .dockerfile
$ cr-manager --filetype python

result

#===============================================================================
# Copyright © 2025 marslo                                                      #
# Licensed under the MIT License, Version 2.0                                  #
#===============================================================================

Python


FILETYPE SUFFIXES
jenkinsfile, groovy, gradle, java .groovy, .java
$ cr-manager --filetype groovy

result

/**
 *******************************************************************************
 * Copyright © 2025 marslo                                                     *
 * Licensed under the MIT License, Version 2.0                                 *
 *******************************************************************************
**/

java-groovy


FILETYPE SUFFIXES
c, cpp, c++, cxx, h, hpp, hxx .c, .cpp, .cxx, .h, .hpp, .hxx
$ cr-manager --filetype cpp

result

/**
 * Copyright © 2025 marslo
 * Licensed under the MIT License, Version 2.0
 */

c/cpp


pre-commit hook

# if `COPYRIGHT` file can be found in the root directory of this repository
---
repos:
  - repo: https://github.com/marslo/cr-manager
    rev: v3.0.3
    hooks:
      - id: cr-manager
        args: ["--update"]
# specify the path to the COPYRIGHT file
---
repos:
  - repo: https://github.com/marslo/cr-manager
    rev: v3.0.5
    hooks:
      - id: cr-manager
        args: ["--update", "--copyright", "/path/to/COPYRIGHT"]
        files: ^(jenkinsfile/|.*\.(groovy|py|sh)$)
# only check the copyright headers without modifying files after commit
---
repos:
  - repo: https://github.com/marslo/cr-manager
    rev: v3.0.5
    hooks:
      - id: cr-manager
        args: ["--check"]
        stages: [post-commit]

Install

Binary

  • pipx installation
    $ python3 -m pip install pipx
    $ python3 -m pipx ensurepath
    
  • enable the ansicolor in Windows terminal for better output experience.
    reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
    
# via pipx
$ pipx install --force "git+https://github.com/marslo/cr-manager"
# via pip
$ python3 -m pip install cr-manager

# with binary
$ VERSION="$(curl -fsSL https://api.github.com/repos/marslo/cr-manager/releases/latest | jq -r .tag_name)"
# -- linux --
$ curl -fsSL -o cr-manager https://github.com/marslo/cr-manager/releases/download/${VERSION}/cr-manager-linux
# macos
$ curl -fsSL -o cr-manager https://github.com/marslo/cr-manager/releases/download/${VERSION}/cr-manager-macos
# Windows - running in cmd
> powershell -NoProfile -Command "$v=(Invoke-WebRequest -Uri 'https://api.github.com/repos/marslo/cr-manager/releases/latest' -UseBasicParsing | ConvertFrom-Json).tag_name; Invoke-WebRequest -Uri ('https://github.com/marslo/cr-manager/releases/download/'+$v+'/cr-manager.exe') -OutFile 'cr-manager.exe'; Write-Host ('Downloaded '+$v)"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cr_manager-3.1.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cr_manager-3.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file cr_manager-3.1.0.tar.gz.

File metadata

  • Download URL: cr_manager-3.1.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.2 Linux/6.11.0-1018-azure

File hashes

Hashes for cr_manager-3.1.0.tar.gz
Algorithm Hash digest
SHA256 9097a5585b5c24e24479bbf3f7822cbf8a0645c38db6756aedd9c00000781e4f
MD5 b802ea077af5424ad73090077f35ae94
BLAKE2b-256 9aa277f8d7bd30979eed0a078979684eec444310bad3b1543a6d2ec1d4495efc

See more details on using hashes here.

File details

Details for the file cr_manager-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: cr_manager-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.14.2 Linux/6.11.0-1018-azure

File hashes

Hashes for cr_manager-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3bd7bbfb5f96159aa37a07b3899bd073f2975b113158d0922a14547485a0d40
MD5 1b813167d4f7a82f390a293eda3d8caa
BLAKE2b-256 c804f633529963e2adeac5e1b5d0371b8682b1875b627fe3a31f061b04e9dd3f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page