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 (c3d72d38c09e)

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
# 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/.

# Generate bookmarks.html by interpolating the included (localized)
# `bookmarks.inc` file into the given (unlocalized) `bookmarks.html.in` input.

from __future__ import absolute_import, unicode_literals, print_function

import buildconfig
import sys

from mozbuild import preprocessor


def main(output, bookmarks_html_in, bookmarks_inc, locale=None):
    if not locale:
        raise ValueError('locale must be specified!')

    CONFIG = buildconfig.substs

    # Based on
    # https://dxr.mozilla.org/l10n-central/search?q=path%3Abookmarks.inc+%23if&redirect=true,
    # no localized input uses the preprocessor conditional #if (really,
    # anything but #define), so it's safe to restrict the set of defines to
    # what's used in mozilla-central directly.
    defines = {}
    defines['AB_CD'] = locale
    if defines['AB_CD'] == 'ja-JP-mac':
        defines['AB_CD'] = 'ja'

    defines['BOOKMARKS_INCLUDE_PATH'] = bookmarks_inc

    for var in ('NIGHTLY_BUILD',):
        if var in CONFIG:
            defines[var] = CONFIG[var]

    includes = preprocessor.preprocess(includes=[bookmarks_html_in],
                                       defines=defines,
                                       output=output)
    return includes


if __name__ == "__main__":
    main(sys.argv[1:])