Esempio n. 1
0
def process(index, graphs, trace=False):
    def output(s):
        if not trace:
            io.write(s)

    order = FileTypes.get_filetypes_by_build_target()
    for filetype in order:
        items = index.get(filetype, [])
        items = util.isort(items)
        if items:
            output('%s:\n' % filetype.name)
        for item in items:
            line = '- %s\n' % item
            output(line)
            if trace:
                graph_fp = trace_file(item, filetype)
                graph = DelphiGraph.from_file(graph_fp)
                graphs[item] = graph

                filter_index_by_graph(index, graph,
                                      excludes=[FileTypes.DelphiProjectGroup,
                                                FileTypes.DelphiProject,
                                                FileTypes.Program,
                                                FileTypes.Library,
                                                FileTypes.Package])
Esempio n. 2
0
def classify_file(filepath):
    """Parsing is too slow, guess by extension unless filetype is ambiguous"""
    # XXX very similar to classify_file in trace_program
    filetypes = FileTypes.get_filetypes_from_extension(filepath)
    filetype = filetypes[0]

    # filetype is ambiguous
    if len(filetypes) > 1:
        if os.path.exists(filepath) and FileTypes.is_source_file(filepath):
            filecontent = open(filepath).read()
            header = finders.find_programHeader(filecontent, stripcomments=True)
            if header:
                source_type_name, _ = header
                filetype = FileTypes.get_filetype_from_source_name(source_type_name)

    return filetype
Esempio n. 3
0
def classify_file(filepath, searchpath, stdlibpath):
    located = locate_file(filepath, searchpath + stdlibpath)
    filepath = located and located or filepath
    exists = located and True or False

    # XXX if the filetype is ambiguous and the file is not found there is no way to
    # decide its filetype, just pick the first filetype from the list
    filetypes = FileTypes.get_filetypes_from_extension(filepath)
    filetype = filetypes[0]

    if exists and FileTypes.is_source_file(filepath):
        filepaths = io.iglob(filepath)
        filepath = filepaths[0]
        filecontent = open(filepath).read()
        header = finders.find_programHeader(filecontent, stripcomments=True)
        if header:
            source_type_name, _ = header
            filetype = FileTypes.get_filetype_from_source_name(source_type_name)
    return filepath, exists, filetype
Esempio n. 4
0
def get_explore_report(index, graphs):
    s = 'Graphs:\n'
    order = FileTypes.get_filetypes_by_build_target()
    for filetype in order:
        items = index.get(filetype, [])
        items = util.isort(items)
        for item in items:
            dg = graphs.get(item)
            filter_index_by_graph(index, dg, excludes=[])
            if dg:
                df = dg.rootnode

                def set_path(node):
                    node.path = io.relpath(os.path.join(dg.abspath, node.path),
                                           relative_to=os.getcwd())
                    return True
                set_path(df)
                df.filter_nodes(set_path)

                df.filter_nodes(lambda n: n.filetype in order)
            s += '\n'.join(collect_nodes(df)) + '\n'

    t = ''
    order = FileTypes.get_filetypes_by_category(Categories.Source)
    for filetype in order:
        items = index.get(filetype, [])
        items = util.isort(items)
        if items:
            t += '= %s =\n' % filetype.name
        for item in items:
            t += '- %s\n' % item
    if t:
        s += '\nLoose files:\n'
        s += t

    return s