summaryrefslogtreecommitdiff
path: root/python/build/cmdline.py
blob: 50245f5979f8bfe88caaf6f3dda6e9bbeef7241a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def concatenate_cmdline_variables(src, names):
    """Find duplicate variable declarations on the given source list, and
    concatenate the values of those in the 'names' list."""

    # the result list being constructed
    dest = []

    # a map of variable name to destination list index
    positions = {}

    for item in src:
        i = item.find('=')
        if i > 0:
            # it's a variable
            name = item[:i]
            if name in names:
                # it's a known variable
                if name in positions:
                    # already specified: concatenate instead of
                    # appending it
                    dest[positions[name]] += ' ' + item[i + 1:]
                    continue
                else:
                    # not yet seen: append it and remember the list
                    # index
                    positions[name] = len(dest)
        dest.append(item)

    return dest