rough-minister-58256
05/25/2016, 1:17 AMdef glob_to_regex(glob):
"""Given a glob pattern, return a regex that will match it's path relative to the buildroot.
:param string glob: The glob pattern.
:returns: A regex string that will match a relative glob path with no leading `/`.
"""
replacement_map = (('?', r'.'),
('.', r'[.]'),
('**/', r'(?:.*/)?'),
('*', r'[^/]*'))
for from_pattern, to_pattern in replacement_map:
glob = glob.replace(from_pattern, to_pattern)
# Treat trailing slashes as "the dir and everything beneath it".
if glob.endswith('/'):
glob = r'{}(/.*|$)'.format(glob[:-1])
if glob.startswith('/'):
glob = r'^{}'.format(glob[1:])
return glob