79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
#!/usr/bin/python
|
|
##
|
|
## @author Edouard DUPIN
|
|
##
|
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
|
##
|
|
## @license APACHE v2.0 (see license file)
|
|
##
|
|
|
|
import sys
|
|
import os
|
|
import inspect
|
|
import fnmatch
|
|
import lutinDebug as debug
|
|
import lutinHeritage as heritage
|
|
import datetime
|
|
import lutinTools
|
|
import lutinModule
|
|
import lutinSystem
|
|
import lutinImage
|
|
import lutinHost
|
|
|
|
##
|
|
## constitution of dictionnary:
|
|
## - "type": "compiler", "linker"
|
|
## - "in": input type file
|
|
## - "out": extention of the files
|
|
## - "builder": pointer on the element
|
|
##
|
|
builder_list=[]
|
|
__start_builder_name="lutinBuilder_"
|
|
|
|
|
|
def import_path(path):
|
|
global builder_list
|
|
matches = []
|
|
debug.debug('BUILDER: Start find sub File : "%s"' %path)
|
|
for root, dirnames, filenames in os.walk(path):
|
|
tmpList = fnmatch.filter(filenames, __start_builder_name + "*.py")
|
|
# Import the module :
|
|
for filename in tmpList:
|
|
debug.debug('BUILDER: Find a file : "%s"' %os.path.join(root, filename))
|
|
#matches.append(os.path.join(root, filename))
|
|
sys.path.append(os.path.dirname(os.path.join(root, filename)) )
|
|
builder_name = filename.replace('.py', '')
|
|
the_builder = __import__(builder_name)
|
|
builder_list.append({"name":builder_name,
|
|
"element":the_builder
|
|
})
|
|
debug.debug('BUILDER: type=' + the_builder.get_type() + " in=" + str(the_builder.get_input_type()) + " out=" + str(the_builder.get_output_type()))
|
|
|
|
# we must have call all import before ...
|
|
def init():
|
|
global builder_list
|
|
debug.debug('BUILDER: Initialize all ...')
|
|
for element in builder_list:
|
|
if element["element"] != None:
|
|
element["element"].init()
|
|
|
|
def get_builder(input_type):
|
|
global builder_list
|
|
for element in builder_list:
|
|
if element["element"] != None:
|
|
if input_type in element["element"].get_input_type():
|
|
return element["element"]
|
|
# we can not find the builder ...
|
|
debug.error("Can not find builder for type : '" + str(input_type) + "'")
|
|
raise ValueError('type error :' + str(input_type))
|
|
|
|
|
|
def get_builder_with_output(input_type):
|
|
global builder_list
|
|
for element in builder_list:
|
|
if element["element"] != None:
|
|
if input_type in element["element"].get_output_type():
|
|
return element["element"]
|
|
# we can not find the builder ...
|
|
debug.error("Can not find builder for type : '" + str(input_type) + "'")
|
|
raise ValueError('type error :' + str(input_type)) |