#
# Metrix++, Copyright 2009-2013, Metrix++ Project
# Link: http://metrixplusplus.sourceforge.net
#
# This file is a part of Metrix++ Tool.
#
# Metrix++ is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# Metrix++ is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Metrix++. If not, see .
#
import time
import sys
import logging
import os
import subprocess
import itertools
import core.log
def main():
os.environ['METRIXPLUSPLUS_INSTALL_DIR'] = os.path.dirname(os.path.abspath(__file__))
available_tools = []
for fname in os.listdir(os.path.join(os.environ['METRIXPLUSPLUS_INSTALL_DIR'], 'tools')):
tool_name = os.path.splitext(fname)[0]
if tool_name == '__init__':
continue
if tool_name not in available_tools:
available_tools.append(tool_name)
exemode = None
if len(sys.argv[1:]) != 0:
exemode = sys.argv[1]
if exemode != "-R" and exemode != "-D":
exemode = '-D' # TODO implement install and release mode
# inject '-D' or '-R' option
exit(subprocess.call(itertools.chain([sys.executable, sys.argv[0], '-D'], sys.argv[1:])))
command = ""
if len(sys.argv[1:]) > 1:
command = sys.argv[2]
if command not in available_tools:
logging.error("Unknown action: " + str(command))
print "Usage: %prog --help"
print " or: %prog [options] -- [path 1] ... [path N]"
print "where: actions are:"
for each in available_tools:
print "\t" + each
return 1
tool = __import__('tools', globals(), locals(), [command], -1)
module_attr = tool.__getattribute__(command)
class_attr = module_attr.__getattribute__('Tool')
instance = class_attr.__new__(class_attr)
instance.__init__()
return instance.run(sys.argv[3:])
if __name__ == '__main__':
ts = time.time()
core.log.set_default_format()
exit_code = main()
logging.warning("Exit code: " + str(exit_code) + ". Time spent: " + str(round((time.time() - ts), 2)) + " seconds. Done")
exit(exit_code)