|
|
@ -4,34 +4,46 @@ import re |
|
|
|
|
|
|
|
|
|
|
|
cur_path = os.path.dirname(os.path.realpath(__file__)) |
|
|
|
cur_path = os.path.dirname(os.path.realpath(__file__)) |
|
|
|
generator_path = os.path.join(cur_path, '../') |
|
|
|
generator_path = os.path.join(cur_path, '../') |
|
|
|
|
|
|
|
include_pattern = re.compile(r'CM_ "IMPORT (.*?)"') |
|
|
|
|
|
|
|
|
|
|
|
for dir_name, _, _ in os.walk(cur_path): |
|
|
|
|
|
|
|
|
|
|
|
def read_dbc(dir_name, filename): |
|
|
|
|
|
|
|
with open(os.path.join(dir_name, filename)) as file_in: |
|
|
|
|
|
|
|
return file_in.read() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_dbc(dir_name, filename): |
|
|
|
|
|
|
|
dbc_file_in = read_dbc(dir_name, filename) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes = include_pattern.findall(dbc_file_in) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
output_filename = filename.replace('.dbc', '_generated.dbc') |
|
|
|
|
|
|
|
output_file_location = os.path.join(generator_path, output_filename) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with open(output_file_location, 'w') as dbc_file_out: |
|
|
|
|
|
|
|
dbc_file_out.write('CM_ "AUTOGENERATED FILE, DO NOT EDIT"\n') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for include_filename in reversed(includes): |
|
|
|
|
|
|
|
include_file_header = '\n\nCM_ "Imported file %s starts here"\n' % include_filename |
|
|
|
|
|
|
|
dbc_file_out.write(include_file_header) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include_file = read_dbc(dir_name, include_filename) |
|
|
|
|
|
|
|
dbc_file_out.write(include_file) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dbc_file_out.write('\nCM_ "%s starts here"\n' % filename) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
core_dbc = include_pattern.sub('', dbc_file_in) |
|
|
|
|
|
|
|
dbc_file_out.write(core_dbc) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for dir_name, _, filenames in os.walk(cur_path): |
|
|
|
if dir_name == cur_path: |
|
|
|
if dir_name == cur_path: |
|
|
|
continue |
|
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
print dir_name |
|
|
|
print dir_name |
|
|
|
|
|
|
|
for filename in filenames: |
|
|
|
for filename in os.listdir(dir_name): |
|
|
|
|
|
|
|
if filename.startswith('_'): |
|
|
|
if filename.startswith('_'): |
|
|
|
continue |
|
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
print filename |
|
|
|
print filename |
|
|
|
dbc_file = open(os.path.join(dir_name, filename)).read() |
|
|
|
create_dbc(dir_name, filename) |
|
|
|
dbc_file = '\nCM_ "%s starts here"\n' % filename + dbc_file |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes = re.finditer(r'CM_ "IMPORT (.*?)"', dbc_file) |
|
|
|
|
|
|
|
for include in includes: |
|
|
|
|
|
|
|
dbc_file = dbc_file.replace(include.group(0), '') |
|
|
|
|
|
|
|
include_path = os.path.join(dir_name, include.group(1)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Load included file |
|
|
|
|
|
|
|
include_file = open(include_path).read() |
|
|
|
|
|
|
|
include_file = '\n\nCM_ "Imported file %s starts here"\n' % include.group(1) + include_file |
|
|
|
|
|
|
|
dbc_file = include_file + dbc_file |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dbc_file = 'CM_ "AUTOGENERATED FILE, DO NOT EDIT"\n' + dbc_file |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
output_filename = filename.replace('.dbc', '_generated.dbc') |
|
|
|
|
|
|
|
output_dbc_file = open(os.path.join(generator_path, output_filename), 'w') |
|
|
|
|
|
|
|
output_dbc_file.write(dbc_file) |
|
|
|
|
|
|
|
output_dbc_file.close() |
|
|
|
|
|
|
|