6
6
# See https://github.com/nexB/scancode-toolkit for support or download.
7
7
# See https://aboutcode.org for more information about nexB OSS projects.
8
8
#
9
- import click
9
+
10
10
import os
11
11
import pickle
12
+ from shutil import rmtree
12
13
13
14
import attr
14
15
@@ -53,6 +54,7 @@ class LicenseCache:
53
54
54
55
@staticmethod
55
56
def load_or_build (
57
+ only_builtin = False ,
56
58
licensedcode_cache_dir = licensedcode_cache_dir ,
57
59
scancode_cache_dir = scancode_cache_dir ,
58
60
force = False ,
@@ -81,6 +83,9 @@ def load_or_build(
81
83
directories using the same format that we use for licenses and rules.
82
84
"""
83
85
idx_cache_dir = os .path .join (licensedcode_cache_dir , LICENSE_INDEX_DIR )
86
+ if only_builtin :
87
+ rmtree (idx_cache_dir )
88
+
84
89
create_dir (idx_cache_dir )
85
90
cache_file = os .path .join (idx_cache_dir , LICENSE_INDEX_FILENAME )
86
91
@@ -119,15 +124,19 @@ def load_or_build(
119
124
# Here, the cache is either stale or non-existing: we need to
120
125
# rebuild all cached data (e.g. mostly the index) and cache it
121
126
122
- additional_directories = []
123
- plugin_directories = get_paths_to_installed_licenses_and_rules ()
124
- if plugin_directories :
125
- additional_directories .extend (plugin_directories )
127
+ if only_builtin :
128
+ additional_directory = None
129
+ additional_directories = []
130
+ plugin_directories = []
131
+ else :
132
+ plugin_directories = get_paths_to_installed_licenses_and_rules ()
133
+ if plugin_directories :
134
+ additional_directories .extend (plugin_directories )
126
135
127
- # include installed licenses
128
- if additional_directory :
129
- # additional_directories is originally a tuple
130
- additional_directories .append (additional_directory )
136
+ # include installed licenses
137
+ if additional_directory :
138
+ # additional_directories is originally a tuple
139
+ additional_directories .append (additional_directory )
131
140
132
141
additional_license_dirs = get_license_dirs (additional_dirs = additional_directories )
133
142
validate_additional_license_data (
@@ -355,7 +364,12 @@ def build_unknown_spdx_symbol(licenses_db=None):
355
364
return LicenseSymbolLike (licenses_db ['unknown-spdx' ])
356
365
357
366
358
- def get_cache (force = False , index_all_languages = False , additional_directory = None ):
367
+ def get_cache (
368
+ only_builtin = False ,
369
+ force = False ,
370
+ index_all_languages = False ,
371
+ additional_directory = None
372
+ ):
359
373
"""
360
374
Return a LicenseCache either rebuilt, cached or loaded from disk.
361
375
@@ -364,20 +378,27 @@ def get_cache(force=False, index_all_languages=False, additional_directory=None)
364
378
texts and rules (the default)
365
379
"""
366
380
return populate_cache (
381
+ only_builtin = only_builtin ,
367
382
force = force ,
368
383
index_all_languages = index_all_languages ,
369
384
additional_directory = additional_directory ,
370
385
)
371
386
372
387
373
- def populate_cache (force = False , index_all_languages = False , additional_directory = None ):
388
+ def populate_cache (
389
+ only_builtin = False ,
390
+ force = False ,
391
+ index_all_languages = False ,
392
+ additional_directory = None
393
+ ):
374
394
"""
375
395
Return, load or build and cache a LicenseCache.
376
396
"""
377
397
global _LICENSE_CACHE
378
398
379
399
if force or not _LICENSE_CACHE :
380
400
_LICENSE_CACHE = LicenseCache .load_or_build (
401
+ only_builtin = only_builtin ,
381
402
licensedcode_cache_dir = licensedcode_cache_dir ,
382
403
scancode_cache_dir = scancode_cache_dir ,
383
404
force = force ,
@@ -407,11 +428,17 @@ def load_cache_file(cache_file):
407
428
raise Exception (msg ) from e
408
429
409
430
410
- def get_index (force = False , index_all_languages = False , additional_directory = None ):
431
+ def get_index (
432
+ only_builtin = False ,
433
+ force = False ,
434
+ index_all_languages = False ,
435
+ additional_directory = None
436
+ ):
411
437
"""
412
438
Return and eventually build and cache a LicenseIndex.
413
439
"""
414
440
return get_cache (
441
+ only_builtin = only_builtin ,
415
442
force = force ,
416
443
index_all_languages = index_all_languages ,
417
444
additional_directory = additional_directory
0 commit comments