| #!/bin/sh |
| # 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. |
| # |
| # Script that can be used to register native messaging hosts in the output |
| # directory. |
| |
| set -e |
| |
| SRC_DIR="$(readlink -f "$(dirname "$0")/../..")" |
| ME2ME_HOST_NAME="com.google.chrome.remote_desktop" |
| IT2ME_HOST_NAME="com.google.chrome.remote_assistance" |
| |
| install_manifest() { |
| local manifest_template="$1" |
| local host_path="$2" |
| local host_path_var_name="$3" |
| local target_dir="$4" |
| |
| local template_name="$(basename ${manifest_template})" |
| local manifest_name="${template_name%.*}" |
| local target_manifest="${target_dir}/${manifest_name}" |
| |
| echo Registering ${host_path} in ${target_manifest} |
| mkdir -p "${target_dir}" |
| sed -e "s#{{ ${host_path_var_name} }}#${host_path}#g" \ |
| < "$manifest_template" > "$target_manifest" |
| } |
| |
| register_hosts() { |
| local build_dir="$1" |
| local chrome_data_dir="$2" |
| |
| install_manifest \ |
| "${SRC_DIR}/remoting/host/setup/${ME2ME_HOST_NAME}.json.jinja2" \ |
| "${build_dir}/native_messaging_host" \ |
| ME2ME_HOST_PATH "${chrome_data_dir}" |
| |
| install_manifest \ |
| "${SRC_DIR}/remoting/host/it2me/${IT2ME_HOST_NAME}.json.jinja2" \ |
| "${build_dir}/remote_assistance_host" \ |
| IT2ME_HOST_PATH "${chrome_data_dir}" |
| } |
| |
| register_hosts_for_all_channels() { |
| local build_dir="$1" |
| |
| if [ $(uname -s) == "Darwin" ]; then |
| register_hosts "${build_dir}" \ |
| "${HOME}/Library/Application Support/Google/Chrome/NativeMessagingHosts" |
| register_hosts "${build_dir}" \ |
| "${HOME}/Library/Application Support/Chromium/NativeMessagingHosts" |
| else |
| register_hosts "${build_dir}" \ |
| "${HOME}/.config/google-chrome/NativeMessagingHosts" |
| register_hosts "${build_dir}" \ |
| "${HOME}/.config/google-chrome-beta/NativeMessagingHosts" |
| register_hosts "${build_dir}" \ |
| "${HOME}/.config/google-chrome-unstable/NativeMessagingHosts" |
| register_hosts "${build_dir}" \ |
| "${HOME}/.config/chromium/NativeMessagingHosts" |
| fi |
| } |
| |
| unregister_hosts() { |
| local chrome_data_dir="$1" |
| |
| rm -f "${chrome_data_dir}/${ME2ME_HOST_NAME}.json" |
| rm -f "${chrome_data_dir}/${IT2ME_HOST_NAME}.json" |
| } |
| |
| unregister_hosts_for_all_channels() { |
| if [ $(uname -s) == "Darwin" ]; then |
| unregister_hosts \ |
| "${HOME}/Library/Application Support/Google/Chrome/NativeMessagingHosts" |
| unregister_hosts \ |
| "${HOME}/Library/Application Support/Chromium/NativeMessagingHosts" |
| else |
| unregister_hosts "${HOME}/.config/google-chrome/NativeMessagingHosts" |
| unregister_hosts "${HOME}/.config/google-chrome-beta/NativeMessagingHosts" |
| unregister_hosts \ |
| "${HOME}/.config/google-chrome-unstable/NativeMessagingHosts" |
| unregister_hosts "${HOME}/.config/chromium/NativeMessagingHosts" |
| fi |
| } |
| |
| print_usage() { |
| echo "Usage: $0 [-r|-u]" >&2 |
| echo " -r Register Release build instead of Debug" >&2 |
| echo " -u Unregister" >&2 |
| } |
| |
| build_dir="Debug" |
| |
| if [[ $# -gt 1 ]]; then |
| print_usage |
| elif [[ $# -eq 1 ]]; then |
| case "$1" in |
| "-r") |
| build_dir="Release" |
| ;; |
| "-u") |
| unregister_hosts_for_all_channels |
| exit 0 |
| ;; |
| *) |
| print_usage |
| exit 1 |
| ;; |
| esac |
| fi |
| |
| register_hosts_for_all_channels "${SRC_DIR}/out/${build_dir}" |