# Copyright (c) 2022 Cisco and/or its affiliates. # 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. set -exuo pipefail # This file should be executed from tox, as the assumed working directory # is different from where this file is located. # This file does not have executable flag nor shebang, # to dissuade non-tox callers. # This script runs a two grep commands as "if" conditions, # using log files to store the data (generated by git commands) to grep, # failing when model implementation edits do not come with model version edit. # The contents of the log files may be useful when fail cause is not obvious. # "set -eu" handles failures from the following two lines. BASH_CHECKS_DIR="$(dirname $(readlink -e "${BASH_SOURCE[0]}"))" BASH_FUNCTION_DIR="$(readlink -e "${BASH_CHECKS_DIR}/../../function")" source "${BASH_FUNCTION_DIR}/common.sh" || { echo "Source failed." >&2 exit 1 } impl_log="edited_files.log" git diff --name-only HEAD~ > "${impl_log}" if ! grep -q '^docs/model/current/schema/test_case*' "${impl_log}"; then # Failing grep means no model edits. warn "No model implementation edits detected." warn warn "CSIT model version checker: PASS" exit 0 fi const_log="constants_edits.log" git diff -U0 HEAD~ -- "resources/libraries/python/Constants.py" > "${const_log}" if ! grep -q '^\+ MODEL_VERSION = ' "${const_log}"; then warn "Model implementation edits without version edit detected!" warn "See ${impl_log} and ${const_log} for what was detected." warn warn "CSIT model version checker: FAIL" exit 1 fi doc_log="docs_edits.log" git diff -U0 HEAD~ -- "docs/model/current/top.rst" > "${doc_log}" if ! grep -q '^\+This document is valid for CSIT model' "${doc_log}"; then warn "Model implementation edits without documentation update detected!" warn "See ${impl_log}, ${const_log} and ${doc_log} for what was detected." warn warn "CSIT model version checker: FAIL" exit 1 fi # TODO: Check constants and docs are specifying the same version. warn "Model version and doc are edited, model implementation edits are allowed." warn warn "CSIT model version checker: PASS" exit 0