Return an index built from rules and licenses directories If ``index_all_languages`` is True, include texts and rules in all languages. Otherwise, only include the English license texts and rules (the default) If ``additional_directories`` is not None, we will include licenses and
(
licenses_db=None,
licenses_data_dir=None,
rules_data_dir=None,
index_all_languages=False,
additional_directories=None,
)
| 207 | |
| 208 | |
| 209 | def build_index( |
| 210 | licenses_db=None, |
| 211 | licenses_data_dir=None, |
| 212 | rules_data_dir=None, |
| 213 | index_all_languages=False, |
| 214 | additional_directories=None, |
| 215 | ): |
| 216 | """ |
| 217 | Return an index built from rules and licenses directories |
| 218 | |
| 219 | If ``index_all_languages`` is True, include texts and rules in all languages. |
| 220 | Otherwise, only include the English license texts and rules (the default) |
| 221 | If ``additional_directories`` is not None, we will include licenses and rules |
| 222 | from these additional directories in the returned index. |
| 223 | """ |
| 224 | from licensedcode.index import LicenseIndex |
| 225 | from licensedcode.models import get_license_dirs |
| 226 | from licensedcode.models import get_rule_dirs |
| 227 | from licensedcode.models import get_rules_from_multiple_dirs |
| 228 | from licensedcode.models import get_all_spdx_key_tokens |
| 229 | from licensedcode.models import get_license_tokens |
| 230 | from licensedcode.models import licenses_data_dir as ldd |
| 231 | from licensedcode.models import rules_data_dir as rdd |
| 232 | from licensedcode.models import load_licenses_from_multiple_dirs |
| 233 | from licensedcode.models import validate_ignorable_clues |
| 234 | from licensedcode.legalese import common_license_words |
| 235 | |
| 236 | licenses_data_dir = licenses_data_dir or ldd |
| 237 | rules_data_dir = rules_data_dir or rdd |
| 238 | |
| 239 | if not licenses_db: |
| 240 | # combine the licenses in these additional directories with the licenses in the original DB |
| 241 | additional_license_dirs = get_license_dirs(additional_dirs=additional_directories) |
| 242 | # generate a single combined license db with all licenses |
| 243 | licenses_db = load_licenses_from_multiple_dirs( |
| 244 | builtin_license_data_dir=licenses_data_dir, |
| 245 | additional_license_data_dirs=additional_license_dirs, |
| 246 | with_deprecated=False, |
| 247 | ) |
| 248 | |
| 249 | # if we have additional directories, extract the rules from them |
| 250 | additional_rule_dirs = get_rule_dirs(additional_dirs=additional_directories) |
| 251 | validate_ignorable_clues(rule_directories=additional_rule_dirs, is_builtin=False) |
| 252 | # then combine the rules in these additional directories with the rules in the original rules directory |
| 253 | rules = get_rules_from_multiple_dirs( |
| 254 | licenses_db=licenses_db, |
| 255 | additional_rules_data_dirs=additional_rule_dirs, |
| 256 | builtin_rule_data_dir=rules_data_dir, |
| 257 | ) |
| 258 | |
| 259 | legalese = common_license_words |
| 260 | spdx_tokens = set(get_all_spdx_key_tokens(licenses_db)) |
| 261 | license_tokens = set(get_license_tokens()) |
| 262 | |
| 263 | # only skip licenses to be indexed |
| 264 | if not index_all_languages: |
| 265 | rules = (r for r in rules if r.language == 'en') |
| 266 |
no test coverage detected