1#!/usr/bin/env bash 2# Copyright 2021 gRPC authors. 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16set -eo pipefail 17 18display_usage() { 19 cat <<EOF >/dev/stderr 20A helper to run isort import sorter. 21 22USAGE: $0 [--diff] 23 --diff: Do not apply changes, only show the diff 24 25ENVIRONMENT: 26 XDS_K8S_DRIVER_VENV_DIR: the path to python virtual environment directory 27 Default: $XDS_K8S_DRIVER_DIR/venv 28EXAMPLES: 29$0 30$0 --diff 31EOF 32 exit 1 33} 34 35if [[ "$1" == "-h" || "$1" == "--help" ]]; then 36 display_usage 37fi 38 39SCRIPT_DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" 40readonly SCRIPT_DIR 41readonly XDS_K8S_DRIVER_DIR="${SCRIPT_DIR}/.." 42 43cd "${XDS_K8S_DRIVER_DIR}" 44 45# Relative paths not yet supported by shellcheck. 46# shellcheck source=/dev/null 47source "${XDS_K8S_DRIVER_DIR}/bin/ensure_venv.sh" 48 49if [[ "$1" == "--diff" ]]; then 50 readonly MODE="--diff" 51else 52 readonly MODE="--overwrite-in-place" 53fi 54 55# typing is the only module allowed to put imports on the same line: 56# https://google.github.io/styleguide/pyguide.html#313-imports-formatting 57exec python -m isort "${MODE}" \ 58 --force-sort-within-sections \ 59 --force-single-line-imports --single-line-exclusions=typing \ 60 framework bin tests 61 62