checkIncludes: introduce rules-file caching.

We'll want this so that we can have each file evaluated
independently, rather than a directory at a time.
This commit is contained in:
Nick Mathewson 2019-08-05 11:35:13 -04:00
parent 475749351d
commit 3f35ac772b

View File

@ -123,8 +123,12 @@ class Rules(object):
return allowed return allowed
include_rules_cache = {}
def load_include_rules(fname): def load_include_rules(fname):
""" Read a rules file from 'fname', and return it as a Rules object. """ """ Read a rules file from 'fname', and return it as a Rules object. """
if fname in include_rules_cache:
return include_rules_cache[fname]
result = Rules(os.path.split(fname)[0]) result = Rules(os.path.split(fname)[0])
with open_file(fname) as f: with open_file(fname) as f:
for line in f: for line in f:
@ -132,6 +136,7 @@ def load_include_rules(fname):
if line.startswith("#") or not line: if line.startswith("#") or not line:
continue continue
result.addPattern(line) result.addPattern(line)
include_rules_cache[fname] = result
return result return result
if __name__ == '__main__': if __name__ == '__main__':