open-vault/scripts/deprecations-checker.sh
akshya96 c3b1c3188c
Github Action to check deprecations in PR (#19666)
* deprecation check

* adding script

* add execute permission to script

* revert changes

* adding the script back

* added working script for local and GHA

* give execute permissions

* updating revgrep

* adding changes to script, tools

* run go mod tidy

* removing default ref

* make bootstrap

* adding to makefile
2023-03-27 22:50:58 -07:00

53 lines
2 KiB
Bash
Executable file

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0
# This script is sourced into the shell running in a Github Actions workflow.
# Usage:
# To check deprecations locally using the script, follow these steps:
# From the repository root or within a package folder, execute deprecations-checker.sh
# Optionally: to only show deprecations in changed files between the current branch and
# a specific branch, pass the other branch name as an argument to the script.
#
# For example:
# ./scripts/deprecations-checker.sh (or) make deprecations
# ./scripts/deprecations-checker.sh main (or) make ci-deprecations
#
# If no branch name is specified, the command will show all usage of deprecations in the code.
#
# GitHub Actions runs this against the PR's base ref branch.
# Staticcheck uses static analysis to finds bugs and performance issues, offers simplifications,
# and enforces style rules.
# Here, it is used to check if a deprecated function, variable, constant or field is used.
# Run staticcheck
echo "Performing deprecations check: running staticcheck"
# Identify repository name
if [ -z $2 ]; then
# local repository name
repositoryName=$(basename `git rev-parse --show-toplevel`)
else
# github repository name from deprecated-functions-checker.yml
repositoryName=$2
fi
# Modify the command with the correct build tag based on repository
if [ $repositoryName == "vault-enterprise" ]; then
staticcheckCommand=$(echo "staticcheck ./... -tags=enterprise")
else
staticcheckCommand=$(echo "staticcheck ./...")
fi
# If no compare branch name is specified, output all deprecations
# Else only output the deprecations from the changes added
if [ -z $1 ]
then
$staticcheckCommand | grep deprecated
else
# GitHub Actions will use this to find only changes wrt PR's base ref branch
# revgrep CLI tool will return an exit status of 1 if any issues match, else it will return 0
$staticcheckCommand | grep deprecated 2>&1 | revgrep "$(git merge-base HEAD "origin/$1")"
fi