mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
137 lines
4.7 KiB
Bash
Executable File
137 lines
4.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# THIS SCRIPT IS INTENDED FOR LOCAL GIT CLONE TEST ENVIRONMENTS ONLY. REVIEW THIS SCRIPT THOROUGHLY TO DETERMINE SUITABILITY FOR YOUR TEST ENVIRONMENT.
|
|
|
|
function intro ()
|
|
{
|
|
echo; echo "###########################################################
|
|
# #
|
|
# THIS SCRIPT IS INTENDED FOR LOCAL GIT CLONE TEST #
|
|
# ENVIRONMENTS ONLY. REVIEW THIS SCRIPT THOROUGHLY TO #
|
|
# DETERMINE SUITABILITY FOR YOUR TEST ENVIRONMENT. #
|
|
# #
|
|
# This script lists which AsciiDoc assemblies in a Git #
|
|
# repository include a particular module. You can use #
|
|
# the output to check that the assembly references at #
|
|
# the top of modules are up to date. The script can be #
|
|
# run for one module or for all modules updated in a Git #
|
|
# commit. #
|
|
# #
|
|
# For the latter, the script assumes that all modules #
|
|
# are stored in a './module' directory and that all #
|
|
# assemblies are outside of that. #
|
|
# #
|
|
###########################################################"; echo
|
|
}
|
|
|
|
function get_repo ()
|
|
{
|
|
# Request the absolute path of the Git repository:
|
|
read -p "Input the absolute path of your local Git repository (e.g. /home/myusername/github-repos/myrepo). You can use tab to auto-complete: " -e REPODIR
|
|
# Check that the directory exists:
|
|
if [[ -d "${REPODIR}" ]]; then
|
|
GITDIRCHECK="${REPODIR}/.git"
|
|
if [[ -d "${GITDIRCHECK}" ]]; then
|
|
echo; echo "${REPODIR} is a Git repository."
|
|
# Change to the Git repo directory:
|
|
cd ${REPODIR}
|
|
# List the current branch:
|
|
BRANCH=$(git branch --show-current)
|
|
echo; echo "The current branch is ${BRANCH}. You can change branches by exiting this script with ctrl+c, running 'git checkout <branch>' from ${REPODIR} in another terminal window and then running this script again."
|
|
else
|
|
echo; echo "${REPODIR} is not a Git repository."
|
|
exit 0
|
|
fi
|
|
else
|
|
echo "Directory does not exist."
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
# Clarify if the user wants to run the script for one module or for all modules updated in a Git commit:
|
|
function module_check ()
|
|
{
|
|
SWITCH="off"
|
|
while [ "${SWITCH}" = "off" ]; do
|
|
echo
|
|
echo "Please select an option:"
|
|
echo ""
|
|
echo "1. Run the script for one module"
|
|
echo "2. Run the script for all modules updated in a Git commit"
|
|
echo ""
|
|
echo -e "Please select a number from the list above (or 'q' to quit): \c"
|
|
read MODULESELECT
|
|
echo
|
|
|
|
case "${MODULESELECT}" in
|
|
1) one_module; break ;;
|
|
2) commit_modules; break ;;
|
|
q|Q) exit 0 ;;
|
|
*) echo -e "Answer must be either '1', '2', 'q' or 'Q' (or 'ctrl+c')..."; sleep 3;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Obtain the Git commit ID for your pull request:
|
|
function commit_modules ()
|
|
{
|
|
read -p "Input your local Git commit ID (e.g. b3e939f1365c95a2969ec09eee59664c597275e5). The commit ID can be obtained by running 'git log' from ${REPODIR}: " COMMITID
|
|
}
|
|
|
|
# Set the commit ID to "None" when the script is to be run against one module only:
|
|
function one_module ()
|
|
{
|
|
COMMITID="None"
|
|
}
|
|
|
|
function get_adocs ()
|
|
{
|
|
# Get a list of all assembly files in the repo:
|
|
ASSEMBLIES=$(find . -iname "*.adoc" -not -path "./modules/*" -not -path "./_preview/*")
|
|
# Get a list of modules:
|
|
if [[ "${COMMITID}" = "None" ]]; then
|
|
read -p "Input the relative path to your module (e.g. modules/mymodule.adoc). You can use tab to auto-complete: " -e MODULEPATH
|
|
# Remove preceding `./` characters if they exist:
|
|
MODULES=$(echo ${MODULEPATH} | sed s/"^.\/"/" "/g)
|
|
echo ; echo "Listing the assemblies that include ${MODULES}..."; echo
|
|
else
|
|
MODULES=$(git show ${COMMITID} --name-only | grep -is '^modules/')
|
|
echo ; echo "Listing the assemblies that include each module updated in Git commit ${COMMITID}..."; echo
|
|
fi
|
|
}
|
|
|
|
# List the assemblies in the repo that include each module that is updated in the commit:
|
|
function list_assemblies ()
|
|
{
|
|
for i in ${MODULES}
|
|
do
|
|
echo "###${i}"
|
|
echo "// Module included in the following assemblies:"
|
|
echo "//"
|
|
for j in ${ASSEMBLIES}
|
|
do
|
|
RESULT=$(grep -is ${i} ${j} | grep -is '^include::')
|
|
if [[ -z ${RESULT} ]]; then
|
|
:
|
|
else
|
|
TRUNCJ=$(echo ${j} | sed s/"^.\/"/" "/g)
|
|
echo "// *${TRUNCJ}"
|
|
fi
|
|
done
|
|
echo
|
|
done
|
|
|
|
if [[ "${COMMITID}" = "None" ]]; then
|
|
echo "You can use this output to check that the assembly references at the top of ${MODULES} are up to date in your local Git repository."; echo
|
|
else
|
|
echo "You can use this output to check that the assembly references at the top of each module file are up to date in your local Git repository."; echo
|
|
fi
|
|
}
|
|
|
|
# Main:
|
|
intro
|
|
get_repo
|
|
module_check
|
|
get_adocs
|
|
list_assemblies
|