Add index as a required field to rule_prompt (#1595)

This commit is contained in:
Justin Ibarra
2021-11-14 17:05:42 -09:00
committed by GitHub
parent 017d9a51b7
commit 5e6a58ebab
2 changed files with 9 additions and 7 deletions
+8 -6
View File
@@ -8,7 +8,7 @@ import datetime
import os
import typing
from pathlib import Path
from typing import List
from typing import List, Optional
import click
@@ -96,10 +96,12 @@ def multi_collection(f):
return get_collection
def rule_prompt(path=None, rule_type=None, required_only=True, save=True, verbose=False, **kwargs) -> TOMLRule:
def rule_prompt(path=None, rule_type=None, required_only=True, save=True, verbose=False,
additional_required: Optional[list] = None, **kwargs) -> TOMLRule:
"""Prompt loop to build a rule."""
from .misc import schema_prompt
additional_required = additional_required or []
creation_date = datetime.date.today().strftime("%Y/%m/%d")
if verbose and path:
click.echo(f'[+] Building rule for {path}')
@@ -116,7 +118,7 @@ def rule_prompt(path=None, rule_type=None, required_only=True, save=True, verbos
target_data_subclass = TOMLRuleContents.get_data_subclass(rule_type)
schema = target_data_subclass.jsonschema()
props = schema['properties']
opt_reqs = schema.get('required', [])
required_fields = schema.get('required', []) + additional_required
contents = {}
skipped = []
@@ -130,7 +132,7 @@ def rule_prompt(path=None, rule_type=None, required_only=True, save=True, verbos
if name == 'version':
continue
if required_only and name not in opt_reqs:
if required_only and name not in required_fields:
continue
# build this from technique ID
@@ -164,10 +166,10 @@ def rule_prompt(path=None, rule_type=None, required_only=True, save=True, verbos
contents[name] = schema_prompt(name, value=kwargs.pop(name))
continue
result = schema_prompt(name, required=name in opt_reqs, **options.copy())
result = schema_prompt(name, required=name in required_fields, **options.copy())
if result:
if name not in opt_reqs and result == options.get('default', ''):
if name not in required_fields and result == options.get('default', ''):
skipped.append(name)
continue
+1 -1
View File
@@ -107,7 +107,7 @@ def import_rules(input_file, directory):
base_path = contents.get('name') or contents.get('rule', {}).get('name')
base_path = name_to_filename(base_path) if base_path else base_path
rule_path = os.path.join(RULES_DIR, base_path) if base_path else None
rule_prompt(rule_path, required_only=True, save=True, verbose=True, **contents)
rule_prompt(rule_path, required_only=True, save=True, verbose=True, additional_required=['index'], **contents)
@root.command('toml-lint')