#!/usr/bin/env bash # # Copyright (c) 2021-2024 Project CHIP Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # readonly ZAP_CMD_DEFAULT="zap" ZAP_CMD="$ZAP_CMD_DEFAULT" ZAP_FILE="" function _get_fullpath() { cd "$(dirname "$1")" >/dev/null && echo "$PWD/$(basename "$1")" } function _print_usage() { local name="$(basename "${0}")" local status="${1}" echo "Usage: $name [ option ... ] [ ]" if [ "$status" -ne 0 ]; then echo "Try '$name -h' for more information." fi if [ "$status" -ne 1 ]; then echo "" echo "ZAP Tool Wrapper" echo "" echo " General Options:" echo "" echo " -h, --help Display this help, then exit." echo " --zap ZAP Use the zap program ZAP as the zap executable " echo " to run (default: $ZAP_CMD_DEFAULT)." echo "" echo " Some influential environment variables:" echo "" echo " ZAP_DEVELOPMENT_PATH The path to a zap development environment. This " echo " is likely a zap checkout, used for local " echo " development (current: \"${ZAP_DEVELOPMENT_PATH:-}\")." echo "" echo " If set, this overrides both the '--zap' option " echo " and the 'ZAP_INTALL_PATH' environment variable." echo " ZAP_INSTALL_PATH The path where the 'zap' executable exists. " echo " This may be used if 'zap' is NOT in the current " echo " PATH (current: \"${ZAP_INSTALL_PATH:-}\")." echo "" echo " If set, this overrides the '--zap' option." echo "" fi exit "$status" } # Main set -e # Command Line Option Parsing while [ "${#}" -gt 0 ]; do case "${1}" in -h | --help) _print_usage 0 ;; --zap) ZAP_CMD="${2}" shift 2 ;; -*) echo "ERROR: Unknown or invalid option: '${1}'" >&2 _print_usage 1 ;; *) if [ -z "$ZAP_FILE" ]; then ZAP_FILE="${1}" shift 1 else echo "ERROR: Unexpected argument: '${1}'" >&2 _print_usage 1 fi ;; esac done SCRIPT_PATH="$(_get_fullpath "$0")" CHIP_ROOT="${SCRIPT_PATH%/scripts/tools/zap/run_zaptool.sh}" [[ -n "${ZAP_FILE}" ]] && ZAP_ARGS="-i \"$(_get_fullpath "$ZAP_FILE")\"" || ZAP_ARGS="" if [[ -z "$ZAP_INSTALL_PATH" && -n "$PW_ZAP_CIPD_INSTALL_DIR" ]]; then ZAP_INSTALL_PATH="$PW_ZAP_CIPD_INSTALL_DIR" fi if [ -n "$ZAP_DEVELOPMENT_PATH" ]; then WORKING_DIR=$ZAP_DEVELOPMENT_PATH ZAP_CMD="node src-script/zap-start.js" # Make sure we don't try to munge the package.json in the ZAP repo. export ZAP_SKIP_REAL_VERSION=1 "$CHIP_ROOT"/scripts/tools/zap/zap_bootstrap.sh elif [ -n "$ZAP_INSTALL_PATH" ]; then if [[ "$OSTYPE" == "darwin"* ]]; then ZAP_CMD="$ZAP_INSTALL_PATH/zap.app/Contents/MacOS/zap" else ZAP_CMD="$ZAP_INSTALL_PATH/zap" fi WORKING_DIR="$CHIP_ROOT" else [ -z "$ZAP_CMD" ] && ZAP_CMD="$ZAP_CMD_DEFAULT" WORKING_DIR="$CHIP_ROOT" fi ( cd "$WORKING_DIR" echo "CMD: $ZAP_CMD" echo "ARGS: $ZAP_ARGS" if [[ "${ZAP_ARGS[*]}" == *"/all-clusters-app.zap"* ]]; then ZCL_FILE="$CHIP_ROOT/src/app/zap-templates/zcl/zcl-with-test-extensions.json" else ZCL_FILE="$CHIP_ROOT/src/app/zap-templates/zcl/zcl.json" fi bash -c " \ $ZAP_CMD \ --logToStdout \ --gen \"$CHIP_ROOT/src/app/zap-templates/app-templates.json\" \ --zcl \"$ZCL_FILE\" \ $ZAP_ARGS \ " )