{"id":18698007,"url":"https://github.com/cloudposse-archives/copyright-header","last_synced_at":"2025-04-07T13:09:58.069Z","repository":{"id":3966639,"uuid":"5060864","full_name":"cloudposse-archives/copyright-header","owner":"cloudposse-archives","description":"© Copyright Header is a utility to manipulate software licenses on source code. ","archived":false,"fork":false,"pushed_at":"2024-01-22T05:22:19.000Z","size":100,"stargazers_count":180,"open_issues_count":15,"forks_count":59,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-31T12:05:06.732Z","etag":null,"topics":["copyright","header","license","open-source","opensource","source-code"],"latest_commit_sha":null,"homepage":"https://cloudposse.com/accelerate","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudposse-archives.png","metadata":{"funding":{"github":"cloudposse"},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-07-15T23:05:26.000Z","updated_at":"2025-02-22T23:47:46.000Z","dependencies_parsed_at":"2023-12-17T08:03:45.241Z","dependency_job_id":"5f91354a-1c11-4891-ad78-1005c41dd506","html_url":"https://github.com/cloudposse-archives/copyright-header","commit_stats":{"total_commits":94,"total_committers":27,"mean_commits":"3.4814814814814814","dds":"0.43617021276595747","last_synced_commit":"8acc985022a352a780e8230392bff6a298e75709"},"previous_names":["osterman/copyright-header","cloudposse-archives/copyright-header","cloudposse/copyright-header"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse-archives%2Fcopyright-header","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse-archives%2Fcopyright-header/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse-archives%2Fcopyright-header/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse-archives%2Fcopyright-header/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudposse-archives","download_url":"https://codeload.github.com/cloudposse-archives/copyright-header/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247657281,"owners_count":20974345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["copyright","header","license","open-source","opensource","source-code"],"created_at":"2024-11-07T11:26:35.152Z","updated_at":"2025-04-07T13:09:58.040Z","avatar_url":"https://github.com/cloudposse-archives.png","language":"Ruby","funding_links":["https://github.com/sponsors/cloudposse"],"categories":[],"sub_categories":[],"readme":"\u003c!-- This file was automatically generated by the `build-harness`. Make all changes to `README.yaml` and run `make readme` to rebuild this file. --\u003e\n\n[![Cloud Posse](https://cloudposse.com/logo-300x69.svg)](https://cloudposse.com)\n\n# copyright-header [![Build Status](https://travis-ci.org/cloudposse/copyright-header.svg?branch=master)](https://travis-ci.org/cloudposse/copyright-header) [![Latest Release](https://img.shields.io/github/release/cloudposse/copyright-header.svg)](https://github.com/cloudposse/copyright-header/releases) [![Slack Community](https://slack.cloudposse.com/badge.svg)](https://slack.cloudposse.com)\n\n\nCopyright Header is a utility to manipulate licenses on source code.\n\nFeatures\n--------\n\n* Add/remove a copyright headers recursively on source files\n* Customize the syntax configuration for how to write out comments\n* Built-in support for GPL3 and MIT licenses\n* Supports custom licenes with `--license-file` argument\n* ERB template support\n\nCaveats\n-------\n* Will only remove headers to files that have exactly the same header as the one we added\n* Will only add headers to files which do not contain the case-sensitive pattern `/[Cc]opyright|[Lc]icense/` in the first `N` lines\n* Will not properly format arguments that contain new-line (\"`\\n`\") characters.\n\nRequirements\n------------\n\n* Ruby 1.9.2 (supported version, might work with older rubies but not guaranteed)\n\nInstallation\n------------\n\nInstall Copyright Header from RubyForge:\n\n    gem install copyright-header\n\n\n---\n\nThis project is part of our comprehensive [\"SweetOps\"](https://docs.cloudposse.com) approach towards DevOps. \n\n\n\n\n\n\nIt's 100% Open Source and licensed under the [GNU General Public License](LICENSE).\n\n\n\n\n\n\n## Usage\n\nFull list of supported arguments:\n\n    Usage: copyright-header options [file]\n        -n, --dry-run                    Output the parsed files to STDOUT\n        -o, --output-dir DIR             Use DIR as output directory\n            --license-file FILE          Use FILE as header (instead of using --license argument)\n            --license [AGPL3|ASL2|BSD-2-CLAUSE|BSD-3-CLAUSE|BSD-4-CLAUSE|GPL3|MIT]\n                                         Use LICENSE as header\n            --copyright-software NAME    The common name for this piece of software (e.g. \"Copyright Header\")\n            --copyright-software-description DESC\n                                         The detailed description for this piece of software (e.g. \"A utility to manipulate copyright headers on source code files\")\n            --copyright-holder NAME      The legal owner of the copyright for the software. (e.g. \"Erik Osterman \u003ce@osterman.com\u003e\"). Repeat argument for multiple names.\n            --copyright-year YEAR        The years for which the copyright exists (e.g. \"2012-2017\"). Repeat argument for multiple years.\n        -w, --word-wrap LEN              Maximum number of characters per line for license (default: 80)\n        -a, --add-path PATH              Recursively insert header in all files found in path (allows multiple paths separated by platform path-separator \":\")\n        -r, --remove-path PATH           Recursively remove header in all files found in path (allows multiple paths separated by platform path-separator \":\")\n        -g, --guess-extension            Use the GitHub Linguist gem to guess the extension of the source code when no extension can be determined (experimental).\n        -c, --syntax FILE                Syntax configuration file\n        -V, --version                    Display version information\n        -h, --help                       Display this screen\n\n\n\n\n## Examples\n\nDiscover available parameters by passing the `--help` argument\n\n    copyright-header --help\n\nAdd a GPL3 License header to a file:\n\n    copyright-header --add-path /tmp/test.rb \\\n                     --license GPL3 \\\n                     --copyright-holder 'Joe Shmoe' \\\n                     --copyright-software 'Example Software' \\\n                     --copyright-software-description \"This is the description of the software.\" \\\n                     --copyright-year 2012-2017 \\\n                     --output-dir /tmp \\\n                     --dry-run\n\nRemove the header created in the previous step (without --dry-run argument):\n\n    copyright-header --remove-path /tmp/test.rb \\\n                     --license GPL3 \\\n                     --copyright-holder 'Joe Shmoe' \\\n                     --copyright-software 'Example Software' \\\n                     --copyright-software-description 'This is the description of the software.' \\\n                     --copyright-year 2012-2017 \\\n                     --output-dir /tmp \\\n                     --dry-run\n\nCommand used to generate copyright headers for this script:\n\n    copyright-header  --license GPL3  \\\n                      --add-path lib/:bin/ \\\n                      --guess-extension \\\n                      --copyright-holder 'Erik Osterman \u003ce@osterman.com\u003e' \\\n                      --copyright-software 'Copyright Header' \\\n                      --copyright-software-description \"A utility to manipulate copyright headers on source code files\" \\\n                      --copyright-year 2012-2017 \\\n                      --word-wrap 100 \\\n                      --output-dir ./\n\n\nPaths can be either files or directories. It will recursively traverse the directory tree ignoring all dot files.\n\nYou can specify an alternative syntax configuration file using the `--syntax` argument.\n\n## Rake\n\nThe above example can be performed as rake task inside a Rakefile:\n\n    task :headers do\n      require 'rubygems'\n      require 'copyright_header'\n\n      args = {\n        :license =\u003e 'GPL3',\n        :copyright_software =\u003e 'Copyright Header',\n        :copyright_software_description =\u003e \"A utility to manipulate copyright headers on source code files\",\n        :copyright_holders =\u003e ['Erik Osterman \u003ce@osterman.com\u003e'],\n        :copyright_years =\u003e ['2012-2017'],\n        :add_path =\u003e 'lib',\n        :output_dir =\u003e '.'\n      }\n\n      command_line = CopyrightHeader::CommandLine.new( args )\n      command_line.execute\n    end\n\n## Docker\n\n```\ndocker run --rm --volume `pwd`:/usr/src/ osterman/copyright-header:latest \\\n  --license GPL3 \\\n  --add-path . \\\n  --guess-extension \\\n  --copyright-holder 'Erik Osteman \u003ce@osterman.com\u003e' \\\n  --copyright-software 'Copyright Header' \\\n  --copyright-software-description 'A utility to manipulate copyright headers on source code files' \\\n  --copyright-year 2012-2017 \\\n  --word-wrap 100 \\\n  --output-dir /usr/src/\n```\n\n## Make\n\nHere is how we typically use it in our [`Makefile`](Makefile).\n\nCheck out the Cloud Posse [`build-harness`](https://github.com/cloudposse/build-harness/) for other neat tricks.\n\n\n\n\n\n## Help\n\n**Got a question?**\n\nFile a GitHub [issue](https://github.com/cloudposse/copyright-header/issues), send us an [email][email] or join our [Slack Community][slack].\n\n## Commerical Support\n\nWork directly with our team of DevOps experts via email, slack, and video conferencing. \n\nWe provide *commercial support* for all of our [Open Source][github] projects. As a *Dedicated Support* customer, you have access to our team of subject matter experts at a fraction of the cost of a fulltime engineer. \n\n[![E-Mail](https://img.shields.io/badge/email-hello@cloudposse.com-blue.svg)](mailto:hello@cloudposse.com)\n\n- **Questions.** We'll use a Shared Slack channel between your team and ours.\n- **Troubleshooting.** We'll help you triage why things aren't working.\n- **Code Reviews.** We'll review your Pull Requests and provide constructive feedback.\n- **Bug Fixes.** We'll rapidly work to fix any bugs in our projects.\n- **Build New Terraform Modules.** We'll develop original modules to provision infrastructure.\n- **Cloud Architecture.** We'll assist with your cloud strategy and design.\n- **Implementation.** We'll provide hands on support to implement our reference architectures. \n\n\n## Community Forum\n\nGet access to our [Open Source Community Forum][slack] on Slack. It's **FREE** to join for everyone! Our \"SweetOps\" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build *sweet* infrastructure.\n\n## Contributing\n\n### Bug Reports \u0026 Feature Requests\n\nPlease use the [issue tracker](https://github.com/cloudposse/copyright-header/issues) to report any bugs or file feature requests.\n\n### Developing\n\nIf you are interested in being a contributor and want to get involved in developing this project or [help out](https://github.com/orgs/cloudposse/projects/3) with our other projects, we would love to hear from you! Shoot us an [email](mailto:hello@cloudposse.com).\n\nIn general, PRs are welcome. We follow the typical \"fork-and-pull\" Git workflow.\n\n 1. **Fork** the repo on GitHub\n 2. **Clone** the project to your own machine\n 3. **Commit** changes to your own branch\n 4. **Push** your work back up to your fork\n 5. Submit a **Pull Request** so that we can review your changes\n\n**NOTE:** Be sure to merge the latest changes from \"upstream\" before making a pull request!\n\n\n## Copyright\n\nCopyright © 2017-2018 [Cloud Posse, LLC](https://cloudposse.com)\n\n\n\n\n\n\n\n\n\n\n## License \n\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nGNU GENERAL PUBLIC LICENSE  \nVersion 3, 29 June 2007\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n\n## Trademarks\n\nAll other trademarks referenced herein are the property of their respective owners.\n\n## About\n\nThis project is maintained and funded by [Cloud Posse, LLC][website]. Like it? Please let us know at \u003chello@cloudposse.com\u003e\n\n[![Cloud Posse](https://cloudposse.com/logo-300x69.svg)](https://cloudposse.com)\n\nWe're a [DevOps Professional Services][hire] company based in Los Angeles, CA. We love [Open Source Software](https://github.com/cloudposse/)!\n\nWe offer paid support on all of our projects.  \n\nCheck out [our other projects][github], [apply for a job][jobs], or [hire us][hire] to help with your cloud strategy and implementation.\n\n  [docs]: https://docs.cloudposse.com/\n  [website]: https://cloudposse.com/\n  [github]: https://github.com/cloudposse/\n  [jobs]: https://cloudposse.com/jobs/\n  [hire]: https://cloudposse.com/contact/\n  [slack]: https://slack.cloudposse.com/\n  [linkedin]: https://www.linkedin.com/company/cloudposse\n  [twitter]: https://twitter.com/cloudposse/\n  [email]: mailto:hello@cloudposse.com\n\n\n### Contributors\n\n|  [![Erik Osterman][osterman_avatar]][osterman_homepage]\u003cbr/\u003e[Erik Osterman][osterman_homepage] | [![Leo O'Donnell][leopoldodonnell_avatar]][leopoldodonnell_homepage]\u003cbr/\u003e[Leo O'Donnell][leopoldodonnell_homepage] | [![Christian Meier][mkristian_avatar]][mkristian_homepage]\u003cbr/\u003e[Christian Meier][mkristian_homepage] | [![Gabriel de Perthuis][g2p_avatar]][g2p_homepage]\u003cbr/\u003e[Gabriel de Perthuis][g2p_homepage] | [![Thomas Russell Murphy][thomasrussellmurphy_avatar]][thomasrussellmurphy_homepage]\u003cbr/\u003e[Thomas Russell Murphy][thomasrussellmurphy_homepage] | [![Kongqun Yang][kqyang_avatar]][kqyang_homepage]\u003cbr/\u003e[Kongqun Yang][kqyang_homepage] | [![Vincent Billey][Fenntasy_avatar]][Fenntasy_homepage]\u003cbr/\u003e[Vincent Billey][Fenntasy_homepage] | [![arximboldi][arximboldi_avatar]][arximboldi_homepage]\u003cbr/\u003e[arximboldi][arximboldi_homepage] | [![David][TAGC_avatar]][TAGC_homepage]\u003cbr/\u003e[David][TAGC_homepage] | [![Rafał Rzepecki][dividedmind_avatar]][dividedmind_homepage]\u003cbr/\u003e[Rafał Rzepecki][dividedmind_homepage] | [![David Yip][yipdw_avatar]][yipdw_homepage]\u003cbr/\u003e[David Yip][yipdw_homepage] | [![Daniel Freedman][azakus_avatar]][azakus_homepage]\u003cbr/\u003e[Daniel Freedman][azakus_homepage] | [![Mitch Souders][crzysdrs_avatar]][crzysdrs_homepage]\u003cbr/\u003e[Mitch Souders][crzysdrs_homepage] | [![Mads Bondo Dydensborg][mbd-dbc-dk_avatar]][mbd-dbc-dk_homepage]\u003cbr/\u003e[Mads Bondo Dydensborg][mbd-dbc-dk_homepage] | [![Psy-Q][psy-q_avatar]][psy-q_homepage]\u003cbr/\u003e[Psy-Q][psy-q_homepage] | [![Bryan][bstopp_avatar]][bstopp_homepage]\u003cbr/\u003e[Bryan][bstopp_homepage] | [![Colin Dean][colindean_avatar]][colindean_homepage]\u003cbr/\u003e[Colin Dean][colindean_homepage] | [![Wahaj Shamim][wshamim_avatar]][wshamim_homepage]\u003cbr/\u003e[Wahaj Shamim][wshamim_homepage] | [![halo][halo_avatar]][halo_homepage]\u003cbr/\u003e[halo][halo_homepage] | [![Lloyd Dewolf][lloydde_avatar]][lloydde_homepage]\u003cbr/\u003e[Lloyd Dewolf][lloydde_homepage] |\n|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n\n  [osterman_homepage]: https://github.com/osterman\n  [osterman_avatar]: https://github.com/osterman.png?size=150\n  [leopoldodonnell_homepage]: https://github.com/leopoldodonnell\n  [leopoldodonnell_avatar]: https://github.com/leopoldodonnell.png?size=150\n  [mkristian_homepage]: https://github.com/mkristian\n  [mkristian_avatar]: https://github.com/mkristian.png?size=150\n  [g2p_homepage]: https://github.com/g2p\n  [g2p_avatar]: https://github.com/g2p.png?size=150\n  [thomasrussellmurphy_homepage]: https://github.com/thomasrussellmurphy\n  [thomasrussellmurphy_avatar]: https://github.com/thomasrussellmurphy.png?size=150\n  [kqyang_homepage]: https://github.com/kqyang\n  [kqyang_avatar]: https://github.com/kqyang.png?size=150\n  [Fenntasy_homepage]: https://github.com/Fenntasy\n  [Fenntasy_avatar]: https://github.com/Fenntasy.png?size=150\n  [arximboldi_homepage]: https://github.com/arximboldi\n  [arximboldi_avatar]: https://github.com/arximboldi.png?size=150\n  [TAGC_homepage]: https://github.com/TAGC\n  [TAGC_avatar]: https://github.com/TAGC.png?size=150\n  [dividedmind_homepage]: https://github.com/dividedmind\n  [dividedmind_avatar]: https://github.com/dividedmind.png?size=150\n  [yipdw_homepage]: https://github.com/yipdw\n  [yipdw_avatar]: https://github.com/yipdw.png?size=150\n  [azakus_homepage]: https://github.com/azakus\n  [azakus_avatar]: https://github.com/azakus.png?size=150\n  [crzysdrs_homepage]: https://github.com/crzysdrs\n  [crzysdrs_avatar]: https://github.com/crzysdrs.png?size=150\n  [mbd-dbc-dk_homepage]: https://github.com/mbd-dbc-dk\n  [mbd-dbc-dk_avatar]: https://github.com/mbd-dbc-dk.png?size=150\n  [psy-q_homepage]: https://github.com/psy-q\n  [psy-q_avatar]: https://github.com/psy-q.png?size=150\n  [bstopp_homepage]: https://github.com/bstopp\n  [bstopp_avatar]: https://github.com/bstopp.png?size=150\n  [colindean_homepage]: https://github.com/colindean\n  [colindean_avatar]: https://github.com/colindean.png?size=150\n  [wshamim_homepage]: https://github.com/wshamim\n  [wshamim_avatar]: https://github.com/wshamim.png?size=150\n  [halo_homepage]: https://github.com/halo\n  [halo_avatar]: https://github.com/halo.png?size=150\n  [lloydde_homepage]: https://github.com/lloydde\n  [lloydde_avatar]: https://github.com/lloydde.png?size=150\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudposse-archives%2Fcopyright-header","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudposse-archives%2Fcopyright-header","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudposse-archives%2Fcopyright-header/lists"}