71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
Created on Fri May 22 23:32:36 2011
|
||
|
|
||
|
@author: Searge
|
||
|
@version: v1.0
|
||
|
"""
|
||
|
|
||
|
import sys
|
||
|
import logging
|
||
|
from optparse import OptionParser
|
||
|
|
||
|
from commands import Commands, CLIENT, SERVER, CalledProcessError
|
||
|
from mcp import updatemd5_side
|
||
|
|
||
|
|
||
|
def main():
|
||
|
parser = OptionParser(version='MCP %s' % Commands.fullversion())
|
||
|
parser.add_option('--client', dest='only_client', action='store_true', help='only process client', default=False)
|
||
|
parser.add_option('--server', dest='only_server', action='store_true', help='only process server', default=False)
|
||
|
parser.add_option('-f', '--force', action='store_true', dest='force', help='force update', default=False)
|
||
|
parser.add_option('-c', '--config', dest='config', help='additional configuration file')
|
||
|
options, _ = parser.parse_args()
|
||
|
updatemd5(options.config, options.force, options.only_client, options.only_server)
|
||
|
|
||
|
|
||
|
def updatemd5(conffile, force, only_client, only_server):
|
||
|
try:
|
||
|
commands = Commands(conffile)
|
||
|
|
||
|
# client or server
|
||
|
process_client = True
|
||
|
process_server = True
|
||
|
if only_client and not only_server:
|
||
|
process_server = False
|
||
|
if only_server and not only_client:
|
||
|
process_client = False
|
||
|
|
||
|
if ((process_client and commands.checkmd5s(CLIENT) or process_server and commands.checkmd5s(SERVER))
|
||
|
and not force):
|
||
|
print 'WARNING:'
|
||
|
print 'The updatemd5 script is unsupported and should only be run in special'
|
||
|
print 'cases, such as if there were compile errors in the last decompile which'
|
||
|
print 'have now been corrected. It will reset the changed status of all classes'
|
||
|
print 'for reobfuscation, and only classes modified afterwards will end up in'
|
||
|
print 'the reobf directory.'
|
||
|
print 'Only use this script if you absolutely know what you are doing, or when a'
|
||
|
print 'MCP team member asks you to do so.'
|
||
|
answer = raw_input('If you really want to update all classes, enter "Yes" ')
|
||
|
if answer.lower() not in ['yes']:
|
||
|
print 'You have not entered "Yes", aborting the update process'
|
||
|
sys.exit(1)
|
||
|
|
||
|
if process_client:
|
||
|
try:
|
||
|
updatemd5_side(commands, CLIENT)
|
||
|
except CalledProcessError:
|
||
|
commands.logger.error('Client recompile failed, correct source then rerun updatemd5')
|
||
|
if process_server:
|
||
|
try:
|
||
|
updatemd5_side(commands, SERVER)
|
||
|
except CalledProcessError:
|
||
|
commands.logger.error('Server recompile failed, correct source then rerun updatemd5')
|
||
|
except Exception: # pylint: disable-msg=W0703
|
||
|
logging.exception('FATAL ERROR')
|
||
|
sys.exit(1)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|