/license-check-and-add

license-check-and-add

Primary LanguageTypeScript

License check and add

license-check-and-add is an npm module to check whether a specified piece of text is present in specific formats for a set of files. It also can insert the formatted text into files that do not contain it or remove it from those that do.

Install

npm install -D license-check-and-add

Usage

license-check-and-add is run using the following command either in your terminal if installed globally or as an npm script if installed locally to a module.

license-check-and-add [check|add|remove] -f [path/to/config.json]

The tool will check against files in the directory and its sub-directories unless they are specifically ignored. By default the command will ignore the following directories:

  • node_modules
  • dist

and files with the extensations:

  • png
  • jpg
  • jpeg
  • gif
  • tif
  • ico
  • json
  • zip
  • tgz

You can turn off this default ignoring in the config file.

Configuring

Configuration is expected in a JSON format. You can find a schema here. An example config can be found in our tests

Required fields

license

The path to the file containing the unformatted license text to check/add/remove. You can specify and absolute or relative path. Relative paths will be taken relative to the location where the command is run rather than the config file.

Optional fields

ignoreDefaultIgnores

Boolean value to specify whether or not to use the default ignores specified above. Setting to true will mean that those are NOT used.

ignore

Either the path to an ignore style file (e.g. gitignore) or an array of globby strings specifying which files to ignore (e.g. ["**/*.txt"]). This list will be used in combination with the default ignore list unless you specify not to use that list.

trailingWhitespace

By default this is set such that whitespace at the end of lines in a license is ignored. This means in add mode should your license contain a blank line and your formatting for that license contain a space after a prepend (for example *) then the blank line would have trailing whitespace. It also means when searching for licenses (such as in check mode) a file will match even if its license lines finish in whitespace when the formatted license lines do not. Setting the value of this property to be TRIM will enforce both when checking and adding the license that the file's license contains no whitespace at the end of lines. This can be useful for ensuring that when the license is inserted it meets linting requirements.

output

File location where list of relevent files should be sent to.

  • check - list of files missing licenses
  • add - list of files with licenses added
  • remove - list of files with licenses removed

licenseFormats

Describes how the license should be formatted for different file types. A format object should be used for each entry. You can share a format object for multiple file types by separating the file with a "|". Entries in this field will overright the default formats. Example:

"ts|js": {
    "eachLine": {
        "prepend": "// "
    }
}

The above example will tell the checker to expect the license to be formatted such that each line of the license in a typescript or javascript file starts with // . If the tool is in add mode the license will be inserted in that format also.

Note: if you are specifying a file starting with a dot such as .gitignore do NOT include the leading dot.

defaultFormat

The format the license should take if a file type is iterated over by a checker that is not one of the default formats or specified in the licenseFormats section. If this value is not set then a default format of

{
    "prepend": "/*",
    "append": "*/"
}

will be used.

Format object

A format object is used in the configuration fields default_format and license_formats. The object is used to specify how a license should start, how a license should end and how each line should start and end. Alternatively it can specify a specific file that should be used as the license. Using a format object allows you to comment out licenses in files where they may have an impact if left as text and use the same license file for multiple file types.

Specifying a format object to point to a file:

{
    "file": "/my/path/to/a/license"
}

Specifying a format object to write a line at the start and end of the license:

{
    "prepend": "<!--",
    "append": "-->"
}

Specifying a format object to write at the start and end of each line of the license:

{
    "eachLine": {
        "prepend": "<!-- ",
        "append": " -->"
    }
}

Note: You can combine prepend, append and eachLine formats but file should be used alone.

{
    "gitignore|npmignore|eslintignore|dockerignore|sh|py": {
        "eachLine": {
            "prepend": "# ",
        },
    },
    "html|xml|svg": {
        "prepend": "<!--",
        "append": "-->",
    },
    "js|ts|css|scss|less|php|as|c|java|cpp|go|cto|acl": {
        "prepend": "/*",
        "append": "*/",
    },
    "txt": {},
}