| #!/bin/bash |
| ## |
| ## Copyright (c) 2012 The WebM project authors. All Rights Reserved. |
| ## |
| ## Use of this source code is governed by a BSD-style license |
| ## that can be found in the LICENSE file in the root of the source |
| ## tree. An additional intellectual property rights grant can be found |
| ## in the file PATENTS. All contributing project authors may |
| ## be found in the AUTHORS file in the root of the source tree. |
| |
| # A script to generate an Omaha config WebM QuickTime. |
| # |
| # Example: |
| # generate_omaha_config.sh webmquicktime.config |
| # |
| set -e |
| |
| if [[ $(basename $(pwd)) != "installer" ]] || \ |
| [[ $(basename $(dirname $(pwd))) != "webmquicktime" ]]; then |
| echo "$(basename $0) must be run from webmquicktime/installer" |
| exit 1 |
| fi |
| |
| source scripts/build/read_bundle_plist.sh |
| source scripts/build/util.sh |
| file_exists "$(which openssl)" || die "openssl does not exist in PATH." |
| |
| # generate_config <|COMPONENT|> <|DMG_BASE|> <|CONFIG_NAME|> |
| # |
| # Generates Omaha server configuration for |COMPONENT|. |COMPONENT| must be |
| # a bundle. |DMG_BASE| is the file name part of the DMG file in which |
| # |COMPONENT| will be distributed. |CONFIG_NAME| is the friendly name for the |
| # Omaha configuration. |
| # |
| # All parameters are required. |generate_config| will |die| when a param is |
| # missing, empty, or invalid. |
| generate_config() { |
| local readonly COMPONENT="$1" |
| file_exists "${COMPONENT}" || die "${COMPONENT} does not exist." |
| local readonly DMG_BASE="$2" |
| [[ -n "${DMG_BASE}" ]] || die "empty DMG_BASE in ${FUNCNAME}." |
| local readonly CONFIG_NAME="$3" |
| [[ -n "${CONFIG_NAME}" ]] || die "empty CONFIG_NAME in ${FUNCNAME}." |
| |
| # Read the application ID and version from |COMPONENT|. |
| local readonly BUNDLE_ID=$(read_bundle_id "${COMPONENT}") |
| [[ -n "${BUNDLE_ID}" ]] || die "empty BUNDLE_ID in ${FUNCNAME}." |
| local readonly VERSION=$(read_bundle_version "${COMPONENT}") |
| [[ -n "${VERSION}" ]] || die "empty VERSION in ${FUNCNAME}." |
| |
| # TODO(tomfinegan): Integrate the DMG build and config generation, and pass |
| # the actual DMG file name around instead of this building |
| # it nonsense. |
| # Build |DMG_FILE| using |VERSION| and |DMG_BASE|. |
| local readonly DMG_FILE="${DMG_BASE}_${VERSION}.dmg" |
| file_exists "${DMG_FILE}" || die "${DMG_FILE} does not exist." |
| |
| # Get the size of |DMG_FILE|. |
| local readonly DMG_SIZE="$(stat -f%z "${DMG_FILE}")" |
| [[ -n "${DMG_SIZE}" ]] || die "empty DMG_SIZE in ${FUNCNAME}." |
| |
| # Generate the omaha hash (base64 encoded SHA1 hash of |DMG_FILE|). |
| local readonly OMAHA_HASH=$(openssl sha1 -binary "${DMG_FILE}" \ |
| | openssl base64) |
| [[ -n "${OMAHA_HASH}" ]] || die "empty OMAHA_HASH in ${FUNCNAME}." |
| |
| cat <<__END_CONFIG |
| # Autogenerated Omaha config for ${CONFIG_NAME} |
| AppId: "${BUNDLE_ID}" |
| ConfigName: "${CONFIG_NAME}" |
| |
| Rule { |
| Test {Version: "[-${VERSION})"} |
| |
| Update { |
| Codebase: "https://dl.google.com/dl/webmquicktime/${DMG_FILE}" |
| Hash: "${OMAHA_HASH}" |
| Size: "${DMG_SIZE}" |
| } |
| } |
| __END_CONFIG |
| } |
| |
| readonly CONFIG_FILE="$1" |
| if [[ $# -lt 1 ]]; then |
| errorlog "usage: $(basename $0) <config file>" |
| die "config file is empty." |
| fi |
| |
| generate_config "../build/Release/AWebM.component" \ |
| "webm_quicktime_installer" "WebM QuickTime Installer" \ |
| > "${CONFIG_FILE}" |
| debuglog "Done, wrote config to ${CONFIG_FILE}." |