From eab72fc8e411f0a9a5932ccb5296546e9b004f90 Mon Sep 17 00:00:00 2001 From: Grant Erickson Date: Thu, 12 Sep 2024 20:36:51 -0700 Subject: [PATCH] Make command line usage of `run_zaptool.sh` more easily discoverable (#35546). (#35548) * Formalize command line option and argument processing. * Add support '-h' for usage in addition to '--help'. * Change shebang from '/bin/bash' to '/usr/bin/env bash'. * Update the file copyright header. --- scripts/tools/zap/run_zaptool.sh | 65 ++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/scripts/tools/zap/run_zaptool.sh b/scripts/tools/zap/run_zaptool.sh index 2895ef4e718d10..4caf9d5610076f 100755 --- a/scripts/tools/zap/run_zaptool.sh +++ b/scripts/tools/zap/run_zaptool.sh @@ -1,7 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash # -# Copyright (c) 2021 Project CHIP Authors +# 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. @@ -16,20 +16,71 @@ # limitations under the License. # +ZAP_FILE="" + function _get_fullpath() { cd "$(dirname "$1")" >/dev/null && echo "$PWD/$(basename "$1")" } -set -e +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 -[[ "$1" == "--help" ]] && { - echo "Usage: $0 [ZAP-file-path]" >&2 - exit 0 + if [ "$status" -ne 1 ]; then + echo "" + echo "ZAP Tool Wrapper" + echo "" + echo " General Options:" + echo "" + echo " -h, --help Display this help, then exit." + echo "" + fi + + exit "$status" } +# Main + +set -e + +# Command Line Option Parsing + +while [ "${#}" -gt 0 ]; do + + case "${1}" in + + -h | --help) + _print_usage 0 + ;; + + -*) + 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 "$1" ]] && ZAP_ARGS="-i \"$(_get_fullpath "$1")\"" || ZAP_ARGS="" +[[ -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"