cache: add more helpers

to enable better testing
This commit is contained in:
Willi Ballenthin
2023-01-20 15:19:48 +01:00
parent e09d35bbb9
commit fbd7c566f4

View File

@@ -85,15 +85,22 @@ class RuleCache:
return cache
def cache_ruleset(ruleset: capa.rules.RuleSet):
def get_ruleset_content(ruleset: capa.rules.RuleSet) -> List[bytes]:
rule_contents = []
for rule in ruleset.rules.values():
if rule.is_subscope_rule():
continue
with open(rule.meta["capa/path"], "rb") as f:
rule_contents.append(f.read())
rule_contents.append(rule.definition.encode("utf-8"))
return rule_contents
id = compute_cache_identifier(rule_contents)
def compute_ruleset_cache_identifier(ruleset: capa.rules.RuleSet) -> CacheIdentifier:
rule_contents = get_ruleset_content(ruleset)
return compute_cache_identifier(rule_contents)
def cache_ruleset(ruleset: capa.rules.RuleSet):
id = compute_ruleset_cache_identifier(ruleset)
path = get_default_cache_path(id)
if os.path.exists(path):
logger.debug("rule set already cached to %s", path)