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

import("//build/config/chrome_build.gni")

_version_py_abspath = "//build/util/version.py"
_remoting_version_abspath = "//remoting/VERSION"
if (is_chrome_branded) {
  _remoting_branding_abspath = "//remoting/branding_Chrome"
} else {
  _remoting_branding_abspath = "//remoting/branding_Chromium"
}

# Set these files as being input dependencies to the scripts, so the build will
# be re-run if the files change.
remoting_version_files = [
  _remoting_version_abspath,
  _remoting_branding_abspath,
]

_remoting_version_path = rebase_path(_remoting_version_abspath, root_build_dir)
_remoting_branding_path =
    rebase_path(_remoting_branding_abspath, root_build_dir)

_branding_dictionary_template = "mac_host_bundle = \"@MAC_HOST_BUNDLE_NAME@\" " + "mac_native_messaging_bundle = \"@MAC_NATIVE_MESSAGING_HOST_BUNDLE_NAME@\" " + "mac_remote_assistance_bundle = \"@MAC_REMOTE_ASSISTANCE_HOST_BUNDLE_NAME@\" " + "prefpane_bundle_name = \"@MAC_PREFPANE_BUNDLE_NAME@\" " + "host_bundle_name = \"@MAC_HOST_BUNDLE_NAME@\" " + "host_name= \"@MAC_HOST_PACKAGE_NAME@\" " + "host_service_name = \"@DAEMON_FILE_NAME@\" " + "bundle_prefix = \"@MAC_UNINSTALLER_BUNDLE_PREFIX@\" " + "host_uninstaller_name = \"@MAC_UNINSTALLER_NAME@\""

_result = exec_script(_version_py_abspath,
                      [
                        "-f",
                        _remoting_branding_path,
                        "-t",
                        _branding_dictionary_template,
                      ],
                      "scope",
                      remoting_version_files)

prefpane_bundle_name = _result.prefpane_bundle_name
host_bundle_name = _result.host_bundle_name
host_name = _result.host_name
host_service_name = _result.host_service_name
bundle_prefix = _result.bundle_prefix
host_uninstaller_name = _result.host_uninstaller_name
me2me_host_bundle_name = _result.mac_host_bundle
native_messaging_host_bundle_name = _result.mac_native_messaging_bundle
remote_assistance_host_bundle_name = _result.mac_remote_assistance_bundle
