chromium/remoting/tools/build/remoting_localize.gni

# Copyright 2015 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Calls the remoting_localize script with a jinja2 template.
#
# Arguments
#
#   sources (required)
#     List of jinja2 files to load. This is the template.
#
#   locale_list (required)
#     List of locales.
#
#   locale_dir (optional)
#
#   defines (optional)
#     List of defines to pass to script.
#     Example: defines = [ "FOO_HOST_PATH=bar" ]
#
#   variables (optional)
#     List of variables to pass to script.
#
#   output (optional)
#     Substitution pattern for the output. Defaults to a file in the target
#     gen dir with the extension stripped (normally the extension is ".jinja2"
#     which then leaves the non-tempaltized file name).
#   TODO(brettw) Need locale_output. This is a per-locale output file.
#
#   encoding (optional)
#     String.
#
#   deps (optional)
#   visibility (optional)
template("remoting_localize") {
  action_foreach(target_name) {
    if (defined(invoker.visibility)) {
      visibility = invoker.visibility
    }

    script = "//remoting/tools/build/remoting_localize.py"

    sources = invoker.sources

    if (defined(invoker.output)) {
      outputs = [ invoker.output ]
    } else {
      outputs = [ "$target_gen_dir/{{source_name_part}}" ]
    }

    args = []

    if (defined(invoker.locale_dir)) {
      args += [
        "--locale_dir",
        rebase_path(invoker.locale_dir, root_build_dir),
      ]
    }

    # Add defines to command line.
    if (defined(invoker.defines)) {
      foreach(i, invoker.defines) {
        args += [
          "--define",
          i,
        ]
      }
    }

    # Add variables to command line.
    if (defined(invoker.variables)) {
      foreach(i, invoker.variables) {
        args += [
          "--variables",
          rebase_path(i, root_build_dir),
        ]
      }
    }

    # The template file is required.
    args += [
      "--template",
      "{{source}}",
    ]

    args += [
      "--output",
      rebase_path(outputs[0], root_build_dir),
    ]

    if (defined(invoker.encoding)) {
      args += [
        "--encoding",
        invoker.encoding,
      ]
    }

    args += invoker.locale_list

    if (defined(invoker.deps)) {
      deps = invoker.deps
    } else {
      deps = []
    }

    # This script reads the messages strings from the generated resource files.
    deps += [ "//remoting/resources:strings" ]
  }
}