https://github.com/JasonGross/coq-tools
Tip revision: a47ed37e05cc2f848d43cb70a627db5c518ba0c0 authored by Jason Gross on 12 July 2022, 18:21:59 UTC
Remove path sensitivity in traceback output, test 12
Remove path sensitivity in traceback output, test 12
Tip revision: a47ed37
binding_util.py
from __future__ import print_function
import os
from coq_version import group_coq_args
from custom_arguments import DEFAULT_LOG
__all__ = ["has_dir_binding", "deduplicate_trailing_dir_bindings", "process_maybe_list"]
def topname_of_filename(file_name):
return os.path.splitext(os.path.basename(file_name))[0].replace('-', '_DASH_')
def has_dir_binding(args, coqc_help, file_name=None):
kwargs = dict()
if file_name is not None: kwargs['topname'] = topname_of_filename(file_name)
bindings = group_coq_args(args, coqc_help, **kwargs)
return any(i[0] in ('-R', '-Q') for i in bindings)
def deduplicate_trailing_dir_bindings(args, coqc_help, coq_accepts_top, file_name=None):
kwargs = dict()
if file_name is not None: kwargs['topname'] = topname_of_filename(file_name)
bindings = group_coq_args(args, coqc_help, **kwargs)
ret = []
for binding in bindings:
if coq_accepts_top or binding[0] != '-top':
ret.extend(binding)
return tuple(ret)
def process_maybe_list(ls, log=DEFAULT_LOG):
if ls is None: return tuple()
if isinstance(ls, str): return tuple([ls])
if isinstance(ls, tuple): return ls
if isinstance(ls, list): return tuple(ls)
log("Unknown type '%s' of list '%s'" % (str(type(ls)), repr(ls)))
return tuple(ls)