DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (31ec81b5d7bb)

VCS Links

Line Code
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import unicode_literals

import string

makefile_template = """# THIS FILE IS AUTOGENERATED BY ${caller} - DO NOT EDIT

${files}
"""

mozbuild_template = """# THIS FILE IS AUTOGENERATED BY ${caller} - DO NOT EDIT

${dirs}
"""

reftest_template = """# THIS FILE IS AUTOGENERATED BY ${caller} - DO NOT EDIT

${reftests}
"""



def makefileString(entries):
    if not len(entries):
        return "  $(NULL)"
    return "\n".join(["  %s \\" % (entry, ) for entry in entries]) + "\n  $(NULL)"


def assignList(variable, entries):
    return "%s := \\\n%s" % (variable, makefileString(entries))


def mozbuildDirs(dirs):
    """Obtain a DIRS assignment string for mozbuild files."""
    parts = ['DIRS += [']
    for d in dirs:
        parts.append("    '%s'," % d)
    parts.append(']')

    return '\n'.join(parts)

def substMakefile(caller, files):
    return string.Template(makefile_template).substitute({
        "caller": caller,
        "files": assignList("MOCHITEST_FILES", files) if files else ""
    })


def substMozbuild(caller, dirs):
    return string.Template(mozbuild_template).substitute({
        "caller": caller,
        "dirs": mozbuildDirs(dirs),
    })


def substReftestList(caller, tests):
    def reftests(tests):
        return "\n".join(" ".join(line) for line in tests)

    return string.Template(reftest_template).substitute({
        "caller": caller,
        "reftests": reftests(tests),
    })