Bash程序  |  73行  |  2.35 KB

#!/bin/bash
#
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
USAGE="Usage: deploy_private_test.sh -a PATH_TO_PUBLIC_AUTOTEST \
-p PATH_TO_PRIVATE_AUTOTEST"
HELP="${USAGE}
    Link server side tests under PATH_TO_PRIVATE_AUTOTEST \
to PATH_TO_PUBLIC_AUTOTEST

    PATH_TO_PRIVATE_AUTOTEST defaults to \
/usr/local/autotest/site_utils/autotest_private
    PATH_TO_PUBLIC_AUTOTEST defaults to \
/usr/local/autotest"

AUTOTEST_ROOT="/usr/local/autotest"
PRIVATE_AUTOTEST_ROOT="${AUTOTEST_ROOT}/site_utils/autotest_private"

while getopts ":p:a:h" opt; do
  case $opt in
    a)
      AUTOTEST_ROOT=$OPTARG
      ;;
    p)
      PRIVATE_AUTOTEST_ROOT=$OPTARG
      ;;
    h)
      echo "${HELP}" >&2
      exit 0
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      echo "${USAGE}" >&2
      exit 1
      ;;
  esac
done

if [ ! -d "${AUTOTEST_ROOT}" ]; then
  echo "Invalid public autotest root: ${AUTOTEST_ROOT}" >&2
  exit 1
fi

if [ ! -d "${PRIVATE_AUTOTEST_ROOT}" ]; then
  echo "Invalid private autotest root: ${PRIVATE_AUTOTEST_ROOT}" >&2
  exit 1
fi

PUBLIC_SERVER_TESTS_DIR="${AUTOTEST_ROOT}/server/site_tests"
PUBLIC_SERVER_SUITES_DIR="${PUBLIC_SERVER_TESTS_DIR}/suites"
PUBLIC_CLIENT_TESTS_DIR="${AUTOTEST_ROOT}/client/site_tests"

PRIVATE_SERVER_TESTS_DIR="${PRIVATE_AUTOTEST_ROOT}/server/site_tests"
PRIVATE_SERVER_SUITES_DIR="${PRIVATE_SERVER_TESTS_DIR}/suites"
PRIVATE_CLIENT_TESTS_DIR="${PRIVATE_AUTOTEST_ROOT}/client/site_tests"

echo "Removing existing symbolic links in ${PUBLIC_SERVER_TESTS_DIR}, \
${PUBLIC_CLIENT_TESTS_DIR} and ${PUBLIC_SERVER_SUITES_DIR}"
find ${PUBLIC_SERVER_TESTS_DIR} -type l -exec rm -v {} \;
find ${PUBLIC_CLIENT_TESTS_DIR} -type l -exec rm -v {} \;
find ${PUBLIC_SERVER_SUITES_DIR} -type l -exec rm -v {} \;
echo "Creating links for tests..."
find ${PRIVATE_SERVER_TESTS_DIR} -mindepth 1 -maxdepth 1 \
     -type d ! -path ${PRIVATE_SERVER_SUITES_DIR} \
     -exec ln -v -s {} ${PUBLIC_SERVER_TESTS_DIR} \;
find ${PRIVATE_CLIENT_TESTS_DIR} -mindepth 1 -maxdepth 1 \
     -type d ! -path ${PRIVATE_SERVER_SUITES_DIR} \
     -exec ln -v -s {} ${PUBLIC_CLIENT_TESTS_DIR} \;
echo "Creating links for suites..."
find ${PRIVATE_SERVER_SUITES_DIR} -mindepth 1 -maxdepth 1 -type f \
     -exec ln -v -s {} ${PUBLIC_SERVER_SUITES_DIR} \;