Skip to content
Snippets Groups Projects
Commit a5d55fc9 authored by Sean Bright's avatar Sean Bright Committed by George Joseph
Browse files

sip_to_pjsip.py: Handle #include globs and other fixes

* Wildcards in #includes are now properly expanded

* Implement operators for Section class to allow sorting

ASTERISK-29142 #close

Change-Id: I9b9cd95f4cbe5c24506b75d17173c5aa1a83e5df
parent 57ee79a5
No related branches found
No related tags found
3 merge requests!138Merge branch asterisk-20.3.0 into devel properly,!123Merge asterisk '20.3.0' into devel,!118Draft: manager: AOC-S support for AOCMessage
......@@ -6,6 +6,7 @@ the GNU General Public License Version 2.
"""
import re
import glob
import itertools
from astdicts import OrderedDict
......@@ -57,6 +58,30 @@ class Section(MultiOrderedDict):
"""
return self.id == other.id
def __lt__(self, other):
"""
Use self.id as means of determining equality
"""
return self.id < other.id
def __gt__(self, other):
"""
Use self.id as means of determining equality
"""
return self.id > other.id
def __le__(self, other):
"""
Use self.id as means of determining equality
"""
return self.id <= other.id
def __ge__(self, other):
"""
Use self.id as means of determining equality
"""
return self.id >= other.id
def get(self, key, from_self=True, from_templates=True,
from_defaults=True):
"""
......@@ -215,8 +240,17 @@ def try_include(line):
included filename, otherwise None.
"""
match = re.match('^#include\s*[<"]?(.*)[>"]?$', line)
return match.group(1) if match else None
match = re.match('^#include\s*([^;]+).*$', line)
if match:
trimmed = match.group(1).rstrip()
quoted = re.match('^"([^"]+)"$', trimmed)
if quoted:
return quoted.group(1)
bracketed = re.match('^<([^>]+)>$', trimmed)
if bracketed:
return bracketed.group(1)
return trimmed
return None
def try_section(line):
......@@ -458,8 +492,9 @@ class MultiOrderedConfigParser:
include_name = try_include(line)
if include_name:
parser = self.add_include(include_name)
parser.read(include_name, sect)
for incl in sorted(glob.iglob(include_name)):
parser = self.add_include(incl)
parser.read(incl, sect)
continue
section, is_template, templates = try_section(line)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment