Documentation ¶
Overview ¶
import-boss enforces import restrictions in a given repository.
When a directory is verified, import-boss looks for a file called ".import-restrictions". If this file is not found, parent directories will be recursively searched.
If an ".import-restrictions" file is found, then all imports of the package are checked against each "rule" in the file. A rule consists of three parts:
- A SelectorRegexp, to select the import paths that the rule applies to.
- A list of AllowedPrefixes
- A list of ForbiddenPrefixes
An import is allowed if it matches at least one allowed prefix and does not match any forbidden prefix. An example file looks like this:
{ "Rules": [ { "SelectorRegexp": "k8s[.]io", "AllowedPrefixes": [ "k8s.io/gengo/examples", "k8s.io/kubernetes/third_party" ], "ForbiddenPrefixes": [ "k8s.io/kubernetes/pkg/third_party/deprecated" ] }, { "SelectorRegexp": "^unsafe$", "AllowedPrefixes": [ ], "ForbiddenPrefixes": [ "" ] } ] }
Note the second block explicitly matches the unsafe package, and forbids it ("" is a prefix of everything).