{"id":18331300,"url":"https://github.com/frapposelli/wwhrd","last_synced_at":"2025-04-09T23:21:25.619Z","repository":{"id":37549508,"uuid":"58978345","full_name":"frapposelli/wwhrd","owner":"frapposelli","description":"You have licenses to manage, What Would Henry Rollins Do?","archived":false,"fork":false,"pushed_at":"2025-03-31T17:31:54.000Z","size":19518,"stargazers_count":137,"open_issues_count":5,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T22:03:50.425Z","etag":null,"topics":["go","golang","henry-rollins","license-checking","license-management","license-scan"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frapposelli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"frapposelli","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2016-05-17T00:52:23.000Z","updated_at":"2025-03-13T12:26:54.000Z","dependencies_parsed_at":"2023-02-18T06:15:58.266Z","dependency_job_id":"73549d0f-b84b-4afe-b866-cad4742bdc06","html_url":"https://github.com/frapposelli/wwhrd","commit_stats":{"total_commits":122,"total_committers":10,"mean_commits":12.2,"dds":"0.48360655737704916","last_synced_commit":"ffb7152e2ea31718201a18658f06786dbb43dd10"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frapposelli%2Fwwhrd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frapposelli%2Fwwhrd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frapposelli%2Fwwhrd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frapposelli%2Fwwhrd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frapposelli","download_url":"https://codeload.github.com/frapposelli/wwhrd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248126366,"owners_count":21051910,"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":["go","golang","henry-rollins","license-checking","license-management","license-scan"],"created_at":"2024-11-05T19:29:46.988Z","updated_at":"2025-04-09T23:21:25.596Z","avatar_url":"https://github.com/frapposelli.png","language":"Go","funding_links":["https://github.com/sponsors/frapposelli"],"categories":[],"sub_categories":[],"readme":"# WWHRD? (What Would Henry Rollins Do?) [![Github Actions](https://github.com/frapposelli/wwhrd/workflows/ci/badge.svg)](https://github.com/frapposelli/wwhrd/actions?query=workflow%3Aci) [![codecov](https://codecov.io/gh/frapposelli/wwhrd/branch/master/graph/badge.svg)](https://codecov.io/gh/frapposelli/wwhrd)\n\n![WWHRD?](./hack/wwhrd.svg)\n\nHave Henry Rollins check vendored licenses in your Go project.\n\nPlease note that `wwhrd` **only checks** packages stored under `vendor/`, if you are using Go modules (`go mod`), you can add `go mod vendor` before running `wwhrd`, this will dump a copy of the vendored packages inside the local repo.\n\n## Installation\n\n```console\ngo get -u github.com/frapposelli/wwhrd\n```\n\nUsing [Brew](https://brew.sh) on macOS:\n\n```console\nbrew install frapposelli/tap/wwhrd\n```\n\n## Configuration file\n\nConfiguration for `wwhrd` is stored in `.wwhrd.yml` at the root of the repo you want to check.\n\nThe format is compatible with [Anderson](https://github.com/xoebus/anderson), just run `wwhrd check -f .anderson.yml`.\n\n```yaml\n---\ndenylist:\n  - GPL-2.0\n\nallowlist:\n  - Apache-2.0\n  - MIT\n\nexceptions:\n  - github.com/jessevdk/go-flags\n  - github.com/pmezard/go-difflib/difflib\n```\n\nHaving a license in the `denylist` section will fail the check, unless the package is listed under `exceptions`.\n\n`exceptions` can also be listed as wildcards:\n\n```yaml\nexceptions:\n  - github.com/davecgh/go-spew/spew/...\n```\n\nWill make a blanket exception for all the packages under `github.com/davecgh/go-spew/spew`.\n\nUse it in your CI!\n\n```console\n$ wwhrd check\nINFO[0006] Found Approved license                        license=Apache-2.0 package=\"github.com/xanzy/ssh-agent\"\nINFO[0006] Found Approved license                        license=BSD-3-Clause package=\"golang.org/x/crypto/ed25519\"\nINFO[0006] Found Approved license                        license=Apache-2.0 package=\"gopkg.in/src-d/go-git.v4/internal/revision\"\nINFO[0006] Found Approved license                        license=Apache-2.0 package=\"gopkg.in/src-d/go-git.v4/plumbing/format/config\"\nINFO[0006] Found Approved license                        license=BSD-3-Clause package=\"golang.org/x/exp/rand\"\nINFO[0006] Found Approved license                        license=BSD-3-Clause package=\"gonum.org/v1/gonum/internal/cmplx64\"\nINFO[0006] Found Approved license                        license=Apache-2.0 package=\"gopkg.in/src-d/go-git.v4/plumbing/cache\"\nINFO[0006] Found Approved license                        license=MIT package=\"github.com/montanaflynn/stats\"\nINFO[0006] Found Approved license                        license=MIT package=\"github.com/ekzhu/minhash-lsh\"\nFATA[0006] Exiting: Non-Approved license found\n$ echo $?\n1\n```\n\n## Generate a dependency graph\n\nStarting from version `v0.3.0`, `wwhrd graph` can be used to generate a graph in DOT language, the graph can then be parsed by Graphviz or other compatible tools.\n\nTo generate a PNG of the dependencies of your repository, you can run:\n\n```console\n$ wwhrd graph -o - | dot -Tpng \u003e wwhrd-graph.png\n```\n\nThe `-o -` option will print the DOT output to `STDOUT`.\n\n## Usage\n\n```console\n$ wwhrd\nUsage:\n  wwhrd [OPTIONS] \u003ccheck | graph | list\u003e\n\nWhat would Henry Rollins do?\n\nApplication Options:\n  -v, --version  Show CLI version\n  -q, --quiet    quiet mode, do not log accepted packages\n  -d, --debug    verbose mode, log everything\n\nHelp Options:\n  -h, --help     Show this help message\n\nAvailable commands:\n  check  Check licenses against config file (aliases: chk)\n  graph  Generate dot graph dependency tree (aliases: dot)\n  list   List licenses (aliases: ls)\n```\n\n## Acknowledgments\n\nWWHRD? graphic by [Mitch Clem](http://mitchclem.tumblr.com/), used with permission, [support him!](https://store.silversprocket.net/collections/mitchclem).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrapposelli%2Fwwhrd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrapposelli%2Fwwhrd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrapposelli%2Fwwhrd/lists"}