Added merging fields/methods/param csv files. And updated FML to 197
This commit is contained in:
parent
06bd2d9d44
commit
188d40b89a
File diff suppressed because it is too large
Load Diff
9110
conf/joined.srg
9110
conf/joined.srg
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -5,3 +5,4 @@
|
|||
/.projects/*/.markers
|
||||
/.projects/*/*/
|
||||
/.root/
|
||||
/*.snap
|
||||
|
|
Binary file not shown.
65
forge.py
65
forge.py
|
@ -2,6 +2,7 @@ import os, os.path, sys
|
|||
import urllib, zipfile
|
||||
import shutil, glob, fnmatch
|
||||
import subprocess, logging, re
|
||||
import csv, shutil
|
||||
import pprint
|
||||
|
||||
forge_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
@ -121,7 +122,9 @@ def get_conf_copy(mcp_dir, forge_dir):
|
|||
common_exc = gen_merged_exc(mcp_dir, forge_dir)
|
||||
common_map = gen_shared_searge_names(common_srg, common_exc)
|
||||
#ToDo use common_map to merge the remaining csvs, client taking precidense, setting the common items to side '2' and editing commands.py in FML to have 'if csv_side == side || csv_side == '2''
|
||||
#gen_merged_fields(os.path.join(mcp_dir, 'conf', 'fields.csv'), os.path.join(forge_dir, 'conf', 'fields.csv'))
|
||||
gen_merged_csv(common_map, os.path.join(mcp_dir, 'conf', 'fields.csv'), os.path.join(forge_dir, 'conf', 'fields.csv'))
|
||||
gen_merged_csv(common_map, os.path.join(mcp_dir, 'conf', 'methods.csv'), os.path.join(forge_dir, 'conf', 'methods.csv'))
|
||||
gen_merged_csv(common_map, os.path.join(mcp_dir, 'conf', 'params.csv'), os.path.join(forge_dir, 'conf', 'params.csv'), main_key='param')
|
||||
|
||||
|
||||
def gen_merged_srg(mcp_dir, forge_dir):
|
||||
|
@ -159,14 +162,14 @@ def gen_merged_srg(mcp_dir, forge_dir):
|
|||
client[type].pop(key)
|
||||
server[type].pop(key)
|
||||
common[type][key] = value
|
||||
|
||||
|
||||
for type in common:
|
||||
for key, value in client[type].items():
|
||||
common[type][key] = value + ' #C'
|
||||
common[type][key] = value #+ ' #C'
|
||||
|
||||
for type in common:
|
||||
for key, value in server[type].items():
|
||||
common[type][key] = value + ' #S'
|
||||
common[type][key] = value #+ ' #S'
|
||||
|
||||
#Print joined retroguard files
|
||||
with open(os.path.join(forge_dir, 'conf', 'joined.srg'), 'w') as f:
|
||||
|
@ -211,12 +214,12 @@ def gen_merged_exc(mcp_dir, forge_dir):
|
|||
if value != '|':
|
||||
common[key] = value
|
||||
|
||||
common = dict(common.items() + server.items())
|
||||
joined = dict(common.items() + server.items())
|
||||
|
||||
#Print joined mcinjector files
|
||||
with open(os.path.join(forge_dir, 'conf', 'joined.exc'), 'w') as f:
|
||||
for key in sorted(common):
|
||||
f.write('%s=%s\n' % (key, common[key]))
|
||||
for key in sorted(joined):
|
||||
f.write('%s=%s\n' % (key, joined[key]))
|
||||
|
||||
return common
|
||||
|
||||
|
@ -225,6 +228,8 @@ def gen_shared_searge_names(common_srg, common_exc):
|
|||
method = re.compile(r'func_[0-9]+_[a-zA-Z_]+')
|
||||
param = re.compile(r'p_[\w]+_\d+_')
|
||||
|
||||
print 'Gathering list of common searge names'
|
||||
|
||||
searge = []
|
||||
|
||||
for key, value in common_srg['FD:'].items():
|
||||
|
@ -242,10 +247,52 @@ def gen_shared_searge_names(common_srg, common_exc):
|
|||
for key, value in common_exc.items():
|
||||
m = param.findall(value)
|
||||
if not m is None:
|
||||
print m
|
||||
for p in m:
|
||||
if not p in searge:
|
||||
searge.append(p)
|
||||
|
||||
return searge
|
||||
|
||||
|
||||
def gen_merged_csv(common_map, in_file, out_file, main_key='searge'):
|
||||
reader = csv.DictReader(open(in_file, 'r'))
|
||||
print 'Generating merged csv for %s' % os.path.basename(in_file)
|
||||
sides = {'client': [], 'server': [], 'common': []}
|
||||
added = []
|
||||
for row in reader:
|
||||
side = int(row['side'])
|
||||
if row[main_key] in common_map:
|
||||
if not row[main_key] in added:
|
||||
row['side'] = '2'
|
||||
sides['common'].append(row)
|
||||
added.append(row[main_key])
|
||||
elif side == 0:
|
||||
sides['client'].append(row)
|
||||
else:
|
||||
sides['server'].append(row)
|
||||
|
||||
writer = csv.DictWriter(open(out_file, 'wb'), fieldnames=reader.fieldnames)
|
||||
writer.writeheader()
|
||||
for key in ['client', 'server', 'common']:
|
||||
for row in sorted(sides[key], key=lambda row: row[main_key]):
|
||||
writer.writerow(row)
|
||||
|
||||
#pprint.pprint(sides)
|
||||
|
||||
def setup_forge_mcp(mcp_dir, forge_dir, dont_gen_conf=True):
|
||||
mcp_conf = os.path.join(mcp_dir, 'conf')
|
||||
mcp_conf_bak = os.path.join(mcp_dir, 'conf.bak')
|
||||
forge_conf = os.path.join(forge_dir, 'conf')
|
||||
|
||||
if os.path.isdir(mcp_conf_bak):
|
||||
print 'Removing old conf backup folder'
|
||||
shutil.rmtree(mcp_conf_bak)
|
||||
|
||||
if not dont_gen_conf:
|
||||
get_conf_copy(mcp_dir, forge_dir)
|
||||
|
||||
print 'Backing up MCP Conf'
|
||||
os.rename(mcp_conf, mcp_conf_bak)
|
||||
|
||||
print 'Copying Forge conf'
|
||||
shutil.copytree(forge_conf, mcp_conf)
|
||||
|
16
setup.py
16
setup.py
|
@ -7,10 +7,12 @@ forge_dir = os.path.dirname(os.path.abspath(__file__))
|
|||
mcp_dir = os.path.abspath('..')
|
||||
src_dir = os.path.join(mcp_dir, 'src')
|
||||
|
||||
from forge import apply_forge_patches
|
||||
from forge import setup_forge_mcp, apply_forge_patches
|
||||
|
||||
def main():
|
||||
print '=================================== Setup Start ================================='
|
||||
dont_gen_conf = '-no_gen_conf' in sys.argv
|
||||
setup_forge_mcp(mcp_dir, forge_dir, dont_gen_conf)
|
||||
setup_fml()
|
||||
|
||||
base_dir = os.path.join(mcp_dir, 'src_base')
|
||||
|
@ -28,6 +30,18 @@ def main():
|
|||
print 'Applying forge patches'
|
||||
apply_forge_patches(os.path.join(forge_dir, 'fml'), mcp_dir, forge_dir, work_dir, False)
|
||||
|
||||
#Restore mcp/conf.bak, therefore restoring normal MCP updating ability
|
||||
if not dont_gen_conf:
|
||||
mcp_conf = os.path.join(mcp_dir, 'conf')
|
||||
mcp_conf_bak = os.path.join(mcp_dir, 'conf.bak')
|
||||
|
||||
if os.path.isdir(mcp_conf):
|
||||
print 'Removing new conf folder'
|
||||
shutil.rmtree(mcp_conf)
|
||||
|
||||
print 'Restoreing original MCP Conf'
|
||||
os.rename(mcp_conf_bak, mcp_conf)
|
||||
|
||||
print '=================================== Setup Finished ================================='
|
||||
|
||||
def setup_fml():
|
||||
|
|
Loading…
Reference in New Issue