Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Copyright Header is a utility to manipulate licenses on source code.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin fixed software name in license headers July 15, 2012
Octocat-spinner-32 contrib
Octocat-spinner-32 lib
Octocat-spinner-32 licenses
Octocat-spinner-32 .gitignore added additional licenses July 15, 2012
Octocat-spinner-32 AUTHORS first commit July 15, 2012
Octocat-spinner-32 Gemfile
Octocat-spinner-32 LICENSE first commit July 15, 2012
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile first commit July 15, 2012
Octocat-spinner-32 copyright-header.gemspec added support for autodetecting file extensions using the github-ling… April 02, 2013
README.md

Copyright Header

Copyright Header is a utility to manipulate licenses on source code.

Features

  • Add/remove a copyright headers recursively on source files
  • Customize the syntax configuration for how to write out comments
  • Built-in support for GPL3 and MIT licenses
  • Supports custom licenes with --license-file argument
  • ERB template support

Caveats

  • Will only remove headers to files that have exactly the same header as the one we added
  • Will only add headers to files which do not contain the case-sensitive pattern /[Cc]opyright|[Lc]icense/ in the first N lines
  • Will not properly format arguments that contain new-line ("\n") characters.

Requirements

  • Ruby 1.9.2 (supported version, might work with older rubies but not guaranteed)

Installation

Install Copyright Header from RubyForge:

gem install copyright-header

Usage

Full list of supported arguments:

Usage: copyright-header options [file]
    -n, --dry-run                    Output the parsed files to STDOUT
    -o, --output-dir DIR             Use DIR as output directory
        --license-file FILE          Use FILE as header (instead of using --license argument)
        --license [AGPL3|ASL2|BSD-2-CLAUSE|BSD-3-CLAUSE|BSD-4-CLAUSE|GPL3|MIT]
                                     Use LICENSE as header
        --copyright-software NAME    The common name for this piece of software (e.g. "Copyright Header")
        --copyright-software-description DESC
                                     The detailed description for this piece of software (e.g. "A utility to manipulate copyright headers on source code files")
        --copyright-holder NAME      The legal owner of the copyright for the software. (e.g. "Erik Osterman <e@osterman.com>"). Repeat argument for multiple names.
        --copyright-year YEAR        The years for which the copyright exists (e.g. "2012"). Repeat argument for multiple years.
    -w, --word-wrap LEN              Maximum number of characters per line for license (default: 80)
    -a, --add-path PATH              Recursively insert header in all files found in path (allows multiple paths separated by platform path-separator ":")
    -r, --remove-path PATH           Recursively remove header in all files found in path (allows multiple paths separated by platform path-separator ":")
    -g, --guess-extension            Use the GitHub Linguist gem to guess the extension of the source code when no extension can be determined (experimental).
    -c, --syntax FILE                Syntax configuration file
    -V, --version                    Display version information
    -h, --help                       Display this screen

Examples

Discover available parameters by passing the --help argument

copyright-header --help

Add a GPL3 License header to a file:

copyright-header --add-path /tmp/test.rb \
                 --license GPL3 \
                 --copyright-holder 'Joe Shmoe' \
                 --copyright-software 'Example Software' \
                 --copyright-software-description "This is the description of the software." \
                 --copyright-year 2012 \
                 --output-dir /tmp \
                 --dry-run 

Remove the header created in the previous step (without --dry-run argument):

copyright-header --remove-path /tmp/test.rb \
                 --license GPL3 \
                 --copyright-holder 'Joe Shmoe' \
                 --copyright-software 'Example Software' \
                 --copyright-software-description 'This is the description of the software.' \
                 --copyright-year 2012 \
                 --output-dir /tmp \
                 --dry-run 

Command used to generate copyright headers for this script:

copyright-header  --license GPL3  \
                  --add-path lib/:bin/ \
                  --guess-extension \
                  --copyright-holder 'Erik Osterman <e@osterman.com>' \
                  --copyright-software 'Copyright Header' \
                  --copyright-software-description "A utility to manipulate copyright headers on source code files" \
                  --copyright-year 2012 \
                  --word-wrap 100 \
                  --output-dir ./

Paths can be either files or directories. It will recursively traverse the directory tree ignoring all dot files.

You can specify an alternative syntax configuration file using the --syntax argument.

Rake

The above example can be performed as rake task inside a Rakefile:

task :headers do
  require 'rubygems'
  require 'copyright_header'

  args = {
    :license => 'GPL3',
    :copyright_software => 'Copyright Header',
    :copyright_software_description => "A utility to manipulate copyright headers on source code files",
    :copyright_holders => ['Erik Osterman <e@osterman.com>'],
    :copyright_years => ['2012'],
    :add_path => 'lib',
    :output_dir => '.'
  }

  command_line = CopyrightHeader::CommandLine.new( args )
  command_line.execute
end

Contributors

https://github.com/osterman/copyright-header/graphs/contributors

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Contact Information

Author: Erik Osterman
E-mail: e@osterman.com
Homepage: http://www.osterman.com/

Something went wrong with that request. Please try again.