blob: 6d5986df138854ec65871479c6d36f98adc74ba9 [file] [log] [blame]
Zack Williams32293ee2018-05-18 09:15:13 -07001#!/usr/bin/env bash
2
Joey Armstrong775a20f2022-12-02 12:55:43 -05003# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
Zack Williams32293ee2018-05-18 09:15:13 -07004#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17# shcheck.sh - check shell scripts with shellcheck
18
19set +e -u -o pipefail
20fail_shellcheck=0
21
22# verify that we have shellcheck-lint installed
Joey Armstrong29874122023-09-21 12:34:34 -040023command -v shellcheck >/dev/null 2>&1 \
24 || { echo "shellcheck not found, please install it" >&2; exit 1; }
Zack Williams32293ee2018-05-18 09:15:13 -070025
26# when not running under Jenkins, use current dir as workspace
27WORKSPACE=${WORKSPACE:-.}
28
29echo "=> Linting shell script with $(shellcheck --version)"
30
31while IFS= read -r -d '' sf
32do
33 echo "==> CHECKING: ${sf}"
34 shellcheck "${sf}"
35 rc=$?
36 if [[ $rc != 0 ]]; then
37 echo "==> LINTING FAIL: ${sf}"
38 fail_shellcheck=1
39 fi
40done < <(find "${WORKSPACE}" \( -name "*.sh" -o -name "*.bash" \) -print0)
41
42exit ${fail_shellcheck}
43
Joey Armstrong29874122023-09-21 12:34:34 -040044# [EOF]