{"id":13395110,"url":"https://github.com/pivotal/LicenseFinder","last_synced_at":"2025-03-13T20:31:52.271Z","repository":{"id":1317895,"uuid":"1262785","full_name":"pivotal/LicenseFinder","owner":"pivotal","description":"Find licenses for your project's dependencies.","archived":false,"fork":false,"pushed_at":"2024-07-22T21:57:46.000Z","size":5828,"stargazers_count":1747,"open_issues_count":136,"forks_count":343,"subscribers_count":51,"default_branch":"master","last_synced_at":"2025-03-10T02:46:59.722Z","etag":null,"topics":["ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/pivotal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-01-17T08:24:18.000Z","updated_at":"2025-03-03T08:43:52.000Z","dependencies_parsed_at":"2024-04-23T05:10:23.652Z","dependency_job_id":"5f70f479-142d-4c27-a7a1-ffa1cc7ee73b","html_url":"https://github.com/pivotal/LicenseFinder","commit_stats":{"total_commits":2417,"total_committers":243,"mean_commits":9.946502057613168,"dds":0.7923045097227969,"last_synced_commit":"1d403ffd94342c6743163c76df2f7456155618c8"},"previous_names":["pivotal-legacy/licensefinder"],"tags_count":113,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pivotal%2FLicenseFinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pivotal%2FLicenseFinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pivotal%2FLicenseFinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pivotal%2FLicenseFinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pivotal","download_url":"https://codeload.github.com/pivotal/LicenseFinder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242799121,"owners_count":20186887,"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":["ruby"],"created_at":"2024-07-30T17:01:42.352Z","updated_at":"2025-03-13T20:31:52.244Z","avatar_url":"https://github.com/pivotal.png","language":"Ruby","funding_links":[],"categories":["Ruby","Software Composition Analysis","Software","Happy Exploring 🤘","Awesome Ruby CLIs","Licensing"],"sub_categories":["Tools \u0026 libs","Search"],"readme":"# License Finder\n\n[![Code Climate](https://codeclimate.com/github/pivotal/LicenseFinder.png)](https://codeclimate.com/github/pivotal/LicenseFinder)\n\nBuild status\n* Ruby 2.7.8 [![Ruby 2.7.8 build status](https://norsk.cf-app.com/api/v1/teams/main/pipelines/LicenseFinder/jobs/ruby-2.7.8/badge)](https://norsk.cf-app.com/teams/main/pipelines/LicenseFinder)\n* Ruby 3.1.4 [![Ruby 3.1.4 build status](https://norsk.cf-app.com/api/v1/teams/main/pipelines/LicenseFinder/jobs/ruby-3.1.4/badge)](https://norsk.cf-app.com/teams/main/pipelines/LicenseFinder)\n* Ruby 3.2.3 [![Ruby 3.2.3 build status](https://norsk.cf-app.com/api/v1/teams/main/pipelines/LicenseFinder/jobs/ruby-3.2.3/badge)](https://norsk.cf-app.com/teams/main/pipelines/LicenseFinder)\n* Ruby 3.3.0 [![Ruby 3.3.0 build status](https://norsk.cf-app.com/api/v1/teams/main/pipelines/LicenseFinder/jobs/ruby-3.3.0/badge)](https://norsk.cf-app.com/teams/main/pipelines/LicenseFinder)\n\n\nLicenseFinder works with your package managers to find dependencies,\ndetect the licenses of the packages in them, compare those licenses\nagainst a user-defined list of permitted licenses,\nand give you an actionable exception report.\n\n* code: https://github.com/pivotal/LicenseFinder\n* ci: https://norsk.cf-app.com/teams/main/pipelines/LicenseFinder\n* docker: [licensefinder/license_finder](https://hub.docker.com/r/licensefinder/license_finder/)\n  * the docker image contains all the package managers needed to run `license_finder`\n* support:\n  * The primary form of communication for support is through github issues. The google groups are not actively\n    monitored\n  * license-finder@googlegroups.com\n  * https://groups.google.com/forum/#!forum/license-finder\n\n### Supported project types\n\n| Project Type | Package Manager | Tested on Version |\n| ------------ |-----------------|------------------:|\n| Ruby Gems    | bundler         | 2.3.7 |\n| Python 2.7 Eggs  | pip2            | 19.0.2 |\n| Python 3.5 Eggs  | pip3            | 20.0.2 |\n| Node.js      | npm             | 6.4.1 |\n| Bower        | bower           | 1.8.4 |\n| Nuget (without license discovery) | nuget           | 4.7.1.5393 |\n| Godep        | Godep           | 80 |\n| Go workspace | Go lang         | 1.11.5 |\n| Go modules   | Go lang         | 1.14.3 |\n| Java         | maven           | 3.6.0 |\n| Java         | gradle          | 5.6.4 |\n\n### Experimental project types\n\n* Erlang (via `rebar` and `Erlang.mk`)\n* Objective-C, Swift (via Carthage, CocoaPods \\[0.39 and below. See [CocoaPods Specs Repo Sharding](http://blog.cocoapods.org/Sharding/)\\]) and Swift Package Manager(SPM)\n* Elixir (via `mix`)\n* Golang (via `gvt`, `glide`,`dep`, `trash` and `govendor`)\n* JavaScript (via `yarn`)\n* C++/C (via `conan`)\n* Scala (via `sbt`)\n* Rust (via `cargo`)\n* PHP (via `composer`)\n* Python (via `Conda`, `pipenv`)\n* Flutter (via `flutter pub`)\n\n## Installation\n\nLicense Finder may be run as a [pre-commit](https://pre-commit.com) hook by\nadding the following to your `.pre-commit-config.yaml`:\n\n```yaml\nrepos:\n  - repo: https://github.com/pivotal/LicenseFinder\n    rev: v7.1.0 # You probably want the latest tag.\n    hooks:\n      - id: license-finder\n```\n\nRunning License Finder directly requires Ruby 2.6.0 or greater. If you have an\nolder version of Ruby installed, you can update via Homebrew:\n\n```sh\n$ ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"\n```\n\nthen:\n\n```sh\n$ brew install ruby\n```\n\nThe easiest way to use `license_finder` directly is to install it as a command\nline tool, like brew, awk, gem or bundler:\n\n```sh\n$ gem install license_finder\n```\n\nThough it's less preferable, if you are using bundler in a Ruby\nproject, you can add `license_finder` to your Gemfile:\n\n```ruby\ngem 'license_finder', :group =\u003e :development\n```\n\nThis approach helps you remember to install `license_finder`, but can\npull in unwanted dependencies, including `bundler`. To mitigate this\nproblem, see [Excluding Dependencies](#excluding-dependencies).\n\n\n## Usage\n\nMake sure your dependencies are installed (with your package manager's install command: `bundle install`, `npm install`, etc.)\n\nThe first time you run `license_finder` it will list all your project's packages.\n\n```sh\n$ license_finder\n```\n\nOr, if you installed with bundler:\n\n```sh\n$ bundle exec license_finder\n```\n\nThe output will report that none of your packages have been\napproved.  Over time you will tell `license_finder` which packages\nare approved, so when you run this command in the future, it will\nreport current action items; i.e., packages that are new or have\nnever been approved.\n\nIf you don't wish to see progressive output \"dots\", use the `--quiet`\noption.\n\nIf you'd like to see debugging output, use the `--debug`\noption. `license_finder` will then output info about packages, their\ndependencies, and where and how each license was discovered. This can\nbe useful when you need to track down an unexpected package or\nlicense.\n\nIf you do not want to manually run an individual package manager's prepare\ncommand (ex: `bundle install`, `npm install`, etc) to ensure your project\nis fully prepared to be scanned, use the `--prepare` or `-p` option which will run\neach active package manager's prepare command for you. If you would like to continue\nrunning `license_finder` even if there is an issue with a prepare step, use the\n`--prepare-no-fail` option which prepares but carries on despite any potential failures.\n\nRun `license_finder help` to see other available commands, and\n`license_finder help [COMMAND]` for detailed help on a specific\ncommand.\n\n### Docker\n\nIf you have docker installed, try using the included `dlf` script (potentially\nsymlinked to be in your path via `ln -s LicenseFinder/dlf /usr/local/bin` or\nwhatever method you prefer). This will run any commands passed to it inside a\npre-provisioned Docker container to maintain consistent versions of all the\npackage managers. For example,\n\n```\n$ dlf npm --version\n5.3.0\n\n$ dlf license_finder --help\n\nDependencies that need approval:\n...\nlicense_finder, 3.0.3, MIT\n\n$ dlf \"bundle install \u0026\u0026 license_finder\"\n```\n\nYou can better understand the way this script works by looking at its source, but for\nreference it will mount your current directory at the path `/scan` and run any commands\npassed to it from that directory. If your command has `\u0026\u0026`, ensure you quote the command. \nIf it does not, ensure the command is not quoted.\n\nNote that the docker image will run the gem which is installed within it.\nSo the docker image tagged `7.0.0` will run *License Finder Version 7.0.0*\n\nSee the [contributing guide](https://github.com/pivotal/LicenseFinder/blob/master/CONTRIBUTING.md) for information on development. \n\n### Activation\n\n`license_finder` will find and include packages for all supported\nlanguages, as long as that language has a package definition in the project directory:\n\n* `Gemfile` (for `bundler`)\n* `requirements.txt` (for `pip`)\n* `Pipfile.lock` (for `pipenv`)\n* `package.json` (for `npm`)\n* `pom.xml` (for `maven`)\n* `build.gradle` or `build.gradle.kts` (for `gradle`)\n* `settings.gradle` that specifies `rootProject.buildFileName` (for `gradle`)\n* `bower.json` (for `bower`)\n* `Podfile` (for `pod`) (set `ACKNOWLEDGEMENTS_PATH` variable if you want to target a particular `Pods-acknowledgements-\u003cTARGET\u003e.plist`. Can be useful in multi-target pods projects.)\n* `Cartfile` (for `carthage`)\n* `workspace-state.json` under build directory (provided as enviroment variable `SPM_DERIVED_DATA` for Xcode, or default `.build` for non-Xcode projects), (for `spm`)\n* `rebar.config` (for `rebar`)\n* `Erlang.mk` or `erlang.mk` file (for `Erlang.mk`)\n* `mix.exs` (for `mix`)\n* `packages/` directory (for `nuget`)\n* `*.csproj` (for `dotnet`)\n* `vendor/manifest` or `*/vendor/manifest` file (for `gvt`)\n* `glide.lock` file (for `glide`)\n* `vendor/vendor.json` file (for `govendor`)\n* `Gopkg.lock` file (for `dep`)\n* `Godeps/Godeps.json` (for `godep`)\n* `*.envrc` file (for `go`) \n* `go.mod` file (for `go mod`)\n* `vendor.conf` file (for `trash`)\n* `yarn.lock` file (for `yarn`)\n* `conanfile.txt` file (for `conan`)\n* `build.sbt` file (for `sbt`)\n* `Cargo.lock` file (for `cargo`)\n* `composer.lock` file (for `composer`)\n* `environment.yml` file (for `conda`)\n* `pubspec.yaml \u0026 .pub cache locaton through ENV variable` (for `flutter`)\n\n### Continuous Integration\n\n`license_finder` will return a non-zero exit status if there are unapproved\ndependencies. This can be useful for inclusion in a CI environment to alert you\nif someone adds an unapproved dependency to the project.\n\n\n## Approving Dependencies\n\n`license_finder` will inform you whenever you have an unapproved dependency.\nIf your business decides this is an acceptable risk, the easiest way to approve\nthe dependency is by running `license_finder approvals add`.\n\nFor example, let's assume you've added the `awesome_gpl_gem`\nto your Gemfile, which `license_finder` reports is unapproved:\n\n```sh\n$ license_finder\nDependencies that need approval:\nawesome_gpl_gem, 1.0.0, GPL\n```\n\nYour business tells you that in this case, it's acceptable to use this\ngem. You now run:\n\n```sh\n$ license_finder approvals add awesome_gpl_gem\n```\n\nIf you rerun `license_finder`, you should no longer see\n`awesome_gpl_gem` in the output.\n\nTo approve specific version\n\n```sh\n$ license_finder approvals add awesome_gpl_gem --version=1.0.0\n```\n\nTo record who approved the dependency and why:\n\n```sh\n$ license_finder approvals add awesome_gpl_gem --who CTO --why \"Go ahead\"\n```\n\n### Permitting Licenses\n\nApproving packages one-by-one can be tedious.  Usually your business has\nblanket policies about which packages are approved.  To tell `license_finder`\nthat any package with the MIT license should be approved, run:\n\n``` sh\n$ license_finder permitted_licenses add MIT\n```\n\nAny current or future packages with the MIT license will be excluded from the\noutput of `license_finder`.\n\nYou can also record `--who` and `--why` when changing permitted licenses,\nor making any other decision about your project.\n\n\n## Output and Artifacts\n\n### Decisions file\n\nAny decisions you make about approvals will be recorded in a YAML file named\n`doc/dependency_decisions.yml`.\n\nThis file must be committed to version control.  Rarely, you will have to\nmanually resolve conflicts in it.  In this situation, keep in mind that each\ndecision has an associated timestamp, and the decisions are processed\ntop-to-bottom, with later decisions overwriting or appending to earlier\ndecisions.\n\n### Output from `action_items`\n\nYou could expect `license_finder`, which is an alias for `license_finder\naction_items` to output something like the following on a Rails project where\nMIT had been permitted:\n\n```\nDependencies that need approval:\n\nhighline, 1.6.14, ruby\njson, 1.7.5, ruby\nmime-types, 1.19, ruby\nrails, 3.2.8, unknown\nrdoc, 3.12, unknown\nrubyzip, 0.9.9, ruby\nxml-simple, 1.1.1, unknown\n```\n\nYou can customize the format of the output in the same way that you customize\n[output from `report`](#output-from-report).\n\n### Output from `project_roots`\n\nThe `license_finder project_roots` command will output the current working directory as a string in an array.\n\nUsing the `--recursive` option means the array will include subdirectories that contain a known package manager. With the exception that Gradle and Maven subprojects will not be included.\n\n\n### Output from `report`\n\nThe `license_finder report` command will output human-readable reports that you\ncould send to your non-technical business partners, lawyers, etc.  You can\nchoose the format of the report (text, csv, html or markdown); see\n`license_finder --help report` for details.  The output is sent to STDOUT, so\nyou can save the reports wherever you want them.  You can commit them to\nversion control if you like.\n\nThe HTML report generated by `license_finder report --format html` summarizes\nall of your project's dependencies and includes information about which need to\nbe approved. The project name at the top of the report can be set with\n`license_finder project_name add`.\n\n### Note:\nWhen using the yarn package manager, when a node_module's package.json doesn't\nexplicitly declare a license, yarn indicates that it has inferred the license based\non some keywords in other files by appending an asterisk to the license name. If you\nsee a * at the end of the license name, this is intended.\n\nSee [CONTRIBUTING.md](https://github.com/pivotal/LicenseFinder/blob/master/CONTRIBUTING.md#adding-reports)\nfor advice about adding and customizing reports.\n\n\n## Manual Intervention\n\n### Setting Licenses\n\nWhen `license_finder` reports that a dependency's license is 'unknown',\nyou should manually research what the actual license is.  When you\nhave established the real license, you can record it with:\n\n```sh\n$ license_finder licenses add my_unknown_dependency MIT\n```\n\nThis command would assign the MIT license to all versions of the dependency\n`my_unknown_dependency`. If you prefer, you could instead assign the license\nto only a specific version of the dependency:\n\n```sh\n$ license_finder licenses add my_unknown_dependency MIT --version=1.0.0\n```\n\nPlease note that adding a license to a specific version of a dependency will \ncause any licenses previously added to all versions of that dependency to be \nforgotten. Similarly, adding a license to all versions of a dependency will \noverride any licenses previously added to specific versions of that dependency.\n\nThere are several ways in which you can remove licenses that were previously\nadded through the `licenses add` command:\n\n```sh\n# Removes all licenses from any version of the dependency\n$ license_finder licenses remove my_unknown_dependency\n\n# Removes just the MIT license from any version of the dependency\n$ license_finder licenses remove my_unknown_dependency MIT\n\n# Removes all licenses from only version 1.0.0 of the dependency\n# This has no effect if you had last added a license to all versions of the dependency\n$ license_finder licenses remove my_unknown_dependency --version=1.0.0\n\n# Removes just the MIT license from only version 1.0.0 of the dependency\n# This has no effect if you had last added a license to all versions of the dependency\n$ license_finder licenses remove my_unknown_dependency MIT --version=1.0.0\n```\n\n### Adding Hidden Dependencies\n\n`license_finder` can track dependencies that your package managers\ndon't know about (JS libraries that don't appear in your\nGemfile/requirements.txt/package.json, etc.)\n\n```sh\n$ license_finder dependencies add my_js_dep MIT 0.1.2\n```\n\nRun `license_finder dependencies help` for\nadditional documentation about managing these dependencies.\n\n`license_finder` cannot automatically detect when one of these\ndependencies has been removed from your project, so you can use:\n\n```sh\n$ license_finder dependencies remove my_js_dep\n```\n\n### Excluding Dependencies\n\nSometimes a project will have development or test dependencies which\nyou don't want to track.  You can exclude theses dependencies by running\n`license_finder ignored_groups`.  (Currently this only works for packages\nmanaged by Bundler, NPM, Yarn, Maven, Pip2, Pip3, and Nuget.)\n\nOn rare occasions a package manager will report an individual dependency\nthat you want to exclude from all reports, even though it is approved.\nYou can exclude an individual dependency by running\n`license_finder ignored_dependencies`.  Think carefully before adding\ndependencies to this list.  A likely item to exclude is `bundler`,\nsince it is a common dependency whose version changes from machine to\nmachine.  Adding it to the `ignored_dependencies` would prevent it\n(and its oscillating versions) from appearing in reports.\n\n### Restricting Licenses\n\nSome projects will have a list of licenses that cannot be used.  You can\nrestrict these licenses with `license_finder restricted_licenses add`.  Any dependency\nthat has exclusively restricted licenses will always appear in the action\nitems, even if someone attempts to manually approve or permit it.  However,\nif a dependency has even one license that is not restricted, it can still be\nmanually approved or permitted.\n\n## Decision inheritance\n\nAdd or remove decision files you want to inherit from - see `license_finder inherited_decisions help` for more information.\n\nThis allows you to have a centralized decision file for approved/restricted licenses. If you have multiple projects it's way easier to have one single place where you approved or restricted licenses defined.\n\nAdd one or more decision files to the inherited decisions\n```bash\nlicense_finder inherited_decisions add DECISION_FILE\n```\n\nRemove one or more decision files from the inherited decisions\n```bash\nlicense_finder inherited_decisions remove DECISION_FILE\n```\n\nList all the inherited decision files\n```bash\nlicense_finder inherited_decisions list\n```\n\n## Configuration\n\nBe default, `license_finder` expects the decisions file to be stored at\n`doc/dependency_decisions.yml`.  All commands can be passed `--decisions_file`\nto override this location.\n\n### Package Manager Configuration\n\nIf you have a gradle project, you can invoke gradle with a custom script by\npassing (for example) `--gradle_command gradlew` to `license_finder` or\n`license_finder report`.\n\nSimilarly you can invoke a custom rebar script with `--rebar_command rebar`.\nIf you store rebar dependencies in a custom directory (by setting `deps_dir` in\n`rebar.config`), set `--rebar_deps_dir`.\n\nYou can also invoke a custom Mix script `remix` with `--mix_command remix` and\nset `--mix_deps_dir` to fetch Mix dependencies from a custom directory.\n\n### Narrow down Package Manager\n\nBy default, license_finder will check for all supported package managers,\nbut you can narrow it down to use only those you pass to `--enabled-package-managers`.\nFor example,\n\n```\n$ license_finder --enabled-package-managers bundler npm\n```\n\n### Saving Configuration\n\nIt may be difficult to remember to pass command line options to every command.\nIn some of these cases you can store default values in a YAML formatted config\nfile. `license_finder` looks for this file in `config/license_finder.yml`.\n\nAs an example, the file might look like this:\n\n```yaml\n---\ndecisions_file: './some_path/decisions.yml'\ngradle_command: './gradlew'\nrebar_command: './rebarw'\nrebar_deps_dir: './rebar_deps'\nmix_command: './mixw'\nmix_deps_dir: './mix_deps'\nenabled_package_managers:\n  - bundler\n  - gradle\n  - rebar\n  - mix\n```\n\n### Gradle Projects\n\n`license_finder` supports both Gradle 1.x and Gradle 2.x. You need to have installed\nthe license-gradle-plugin in your project:\n[https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)\n\nBy default, `license_finder` will report on Gradle's \"runtime\" dependencies. If\nyou want to generate a report for some other dependency configuration (e.g.\nAndroid projects will sometimes specify their meaningful dependencies in the\n\"compile\" group), you can specify it in your project's `build.gradle`:\n\n```\n// Must come *after* applying the appropriate plugin from [https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)\n\ndownloadLicenses {\n  dependencyConfiguration \"compile\"\n}\n```\n\n### Conan Projects\n\n`license_finder` supports Conan. You need to have the following lines in your conanfile.txt for `license_finder` to retrieve dependencies' licenses.\nEnsure that `conan install` does not generate an error.\n\n```\n[imports]\n., license* -\u003e ./licenses @ folder=True, ignore_case=True\n```\n\n### SBT Projects\n\n`license_finder` supports SBT. You need to have installed the sbt-license-report in your project:\n[https://github.com/sbt/sbt-license-report](https://github.com/sbt/sbt-license-report)\n\nBy default, `license_finder` will report on SBT's \"compile\" and \"test\" dependencies. If\nyou want to generate a report for some other dependency configuration, you can specify\nit in your projects's `build.sbt`\n\n```\nlicenseConfigurations := Set(\"compile\", \"provided\")\n```\n\n## Requirements\n\n`license_finder` requires ruby \u003e= 2.6.0.\n\n\n## Upgrading\n\nTo upgrade to `license_finder` version \u003e= 6.0, you have to replace the terminology `whitelist` with `permit` and  `blacklist` with `restrict` in your `dependency_decisions.yml`. See [Changelog](https://github.com/pivotal/LicenseFinder/blob/master/CHANGELOG.md#600--2020-01-22) for more details.\n\nTo upgrade from `license_finder` version 1.2 to 2.0, see\n[`license_finder_upgrade`](https://github.com/mainej/license_finder_upgrade).\nTo upgrade to 2.0 from a version lower than 1.2, first upgrade to 1.2, and run\n`license_finder` at least once.  This will ensure that the `license_finder`\ndatabase is in a state which `license_finder_upgrade` understands.\n\n\n## A Plea to Package Authors and Maintainers\n\nPlease add a license to your package specs! Most packaging systems\nallow for the specification of one or more licenses.\n\nFor example, Ruby Gems can specify a license by name:\n\n```ruby\nGem::Specification.new do |s|\n  s.name = \"my_great_gem\"\n  s.license = \"MIT\"\nend\n```\n\nAnd save a `LICENSE` file which contains your license text in your repo.\n\n## Known issues with specific package managers\n\n* Bundler\n   * When using `--project-path`, Bundler cannot find the Gemfile.\n\n* Yarn\n   * A module that is incompatible with the platform on which\n     license_finder is run will always be reported to have a license type\n     of \"unknown\". ([#456](https://github.com/pivotal/LicenseFinder/issues/456))\n\n## Support\n\n* Send an email to the list: [license-finder@googlegroups.com](license-finder@googlegroups.com)\n* View the project backlog at Pivotal Tracker: [https://www.pivotaltracker.com/n/projects/234851](https://www.pivotaltracker.com/n/projects/234851)\n\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/pivotal/LicenseFinder/blob/master/CONTRIBUTING.md).\n\n\n## License\n\nLicenseFinder is released under the MIT License. http://www.opensource.org/licenses/mit-license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpivotal%2FLicenseFinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpivotal%2FLicenseFinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpivotal%2FLicenseFinder/lists"}