Parse body of annotations file
"""
+ def __init__(self, fname, do_include=True, do_json=False):
+ self.do_json = do_json
+ super().__init__(fname, do_include=True)
+
def _parse_body(self, data: str, parent=True):
for line in data.splitlines():
# Replace tabs with spaces, squeeze multiple into singles and
self._json_parse(data, is_included=True)
def _parse(self, data: str):
- # Try to parse the legacy format first, otherwise use the new JSON
- # format.
- try:
- self._legacy_parse(data)
- except SyntaxError:
+ if self.do_json:
self._json_parse(data, is_included=False)
+ else:
+ self._legacy_parse(data)
def _remove_entry(self, config: str):
if self.config[config]:
action="store_true",
help="Do not process included annotations (stop at the main file)",
)
+ parser.add_argument(
+ "--json",
+ action="store_true",
+ help="Try to parse annotations file in pure JSON format",
+ )
ga = parser.add_argument_group(title="Action").add_mutually_exclusive_group(
required=False
def do_query(args):
if args.arch is None and args.flavour is not None:
arg_fail(_ARGPARSER, "error: --flavour requires --arch")
- a = Annotation(args.file, do_include=(not args.no_include))
+ a = Annotation(args.file, do_include=(not args.no_include), do_json=args.json)
res = a.search_config(config=args.config, arch=args.arch, flavour=args.flavour)
# If no arguments are specified dump the whole annotations structure
if args.config is None and args.arch is None and args.flavour is None: