def manual_config(pattern: str, lang: str, replacement: Optional[str]) -> Dict[str, YamlTree]: # TODO remove when using sgrep -e ... -l ... instead of this hacked config pattern_span = Span.from_string(pattern, filename="CLI Input") pattern_tree = YamlTree[str](value=pattern, span=pattern_span) error_span = Span.from_string( f"Semgrep bug generating manual config {PLEASE_FILE_ISSUE_TEXT}", filename=None) rules_key = { ID_KEY: CLI_RULE_ID, "pattern": pattern_tree, "message": pattern, "languages": [lang], "severity": RuleSeverity.ERROR.value, } if replacement: rules_key["fix"] = replacement return { "manual": YamlTree.wrap( {RULES_KEY: [rules_key]}, span=error_span, ) }
def manual_config(pattern: str, lang: str) -> Dict[str, YamlTree]: # TODO remove when using sgrep -e ... -l ... instead of this hacked config pattern_span = Span.from_string(pattern, filename="CLI Input") pattern_tree = YamlTree[str](value=pattern, span=pattern_span) error_span = parse_yaml_preserve_spans( f"Semgrep bug generating manual config {PLEASE_FILE_ISSUE_TEXT}", filename=None).span return { "manual": YamlTree.wrap( { RULES_KEY: [{ ID_KEY: "-", "pattern": pattern_tree, "message": pattern, "languages": [lang], "severity": "ERROR", }] }, span=error_span, ) }
def from_json(cls, rule_json: Dict[str, Any]) -> "Rule": # type: ignore yaml = YamlTree.wrap(rule_json, EmptySpan) return cls(yaml)