@procore/license-check
Validates that the licenses of a project do not violate Procore's software license requirements. Works for both monorepos as well as single-module projects.
Quick Start
This package can either be installed in a project or run directly using npx
/pnpx
. Additionally, the package provides an API that can be invoked in code.
Install inside of project
yarn add -D @procore/license-check # or npm, pnpm
Then run the command:
yarn license-check check
Execute directly using npx/pnpx
npx @procore/license-check check
Invoked in JavaScript code
Install in project
yarn add -D @procore/license-check # or npm, pnpm
Then use!
import { checkLicenses } from '@procore/license-check'
const startDir = process.cwd()
const forbiddenLicenses = ['GPL-3.0-only']
await checkLicenses(startDir, forbiddenLicenses)
CLI Commands
Usage:
$ license-check
Commands:
check [startDir] license check
For more info, run any command with the `--help` flag:
$ license-check check --help
$ license-check --help
Options:
-h, --help Display this message
-v, --version Display version number
API Methods
checkLicenses(startDir: string, forbiddenLicenses?: Array<string>): Promise<Array<{ name: string; invalid: Array<string>}>>
Returns a list of each workspace in project, along with which licenses are invalid
Parameters:
-
startDir
:string
: the root directory of the project to evaluate. -
forbiddenLicenses
:Array<string>
(defaults to Procore's forbidden licenses): the list of licenses that should be considered invalid.
Returns:
An array of results objects containing the following properties:
-
name
:string
: the name of the project, as specified in itspackage.json
file. -
invalid
:Array<string>
: the package names and versions that violated the license check.
Example
import { checkLicenses } from '@procore/license-check'
const startDir = process.cwd()
const results = await checkLicenses(startDir)
checkLicensesCLI(startDir: string, forbiddenLicenses?: Array<string>): Promise<void>
Executes the license, and formats the output into an easy-to-read format.
Parameters:
-
startDir
:string
: the root directory of the project to evaluate. -
forbiddenLicenses
:Array<string>
(defaults to Procore's forbidden licenses): the list of licenses that should be considered invalid.
NOTE:
- If there are invalid licenses, the output will be written to
stderr
, and program will exit with an exit code of-1
. - If all licenses are valid, and short message will be output to
stdout
.
Example
import { checkLicensesCLI } from '@procore/license-check'
const startDir = process.cwd()
await checkLicensesCLI(startDir)
Development
This project uses pnpm
, and supports the following commands:
-
build
: builds and bundles the project. -
format
: runsprettier
on the project. -
test
: runs the unit test suite, reporting coverage. -
test:dev
: run the unit test suite in watch mode.