carla/Util/BuildTools/Prettify.sh

142 lines
4.1 KiB
Bash
Executable File

#! /bin/bash
# ==============================================================================
# -- Set up environment --------------------------------------------------------
# ==============================================================================
source $(dirname "$0")/Environment.sh
# ==============================================================================
# -- Parse arguments -----------------------------------------------------------
# ==============================================================================
DOC_STRING="Prettify code files."
USAGE_STRING="Usage: $0 [-h|--help] [--all] [-f path|--file=path]"
PRETTIFY_ALL=false
PRETTIFY_FILE=false
OPTS=`getopt -o hf: --long help,all,file: -n 'parse-options' -- "$@"`
eval set -- "$OPTS"
while [[ $# -gt 0 ]]; do
case "$1" in
--all )
PRETTIFY_ALL=true;
shift ;;
-f | --file )
PRETTIFY_FILE="$2";
shift ;;
-h | --help )
echo "$DOC_STRING"
echo "$USAGE_STRING"
exit 1
;;
* )
shift ;;
esac
done
if ! { ${PRETTIFY_ALL} || [ -n "${PRETTIFY_FILE}" ]; } ; then
fatal_error "Nothing selected to be done."
fi
if ${PRETTIFY_ALL} ; then
PRETTIFY_FILE=false
elif [[ ! -f ${PRETTIFY_FILE} ]] ; then
pwd
fatal_error "\"${PRETTIFY_FILE}\" no such file."
fi
# ==============================================================================
# -- Get latest version of uncrustify ------------------------------------------
# ==============================================================================
mkdir -p ${CARLA_BUILD_FOLDER}
pushd ${CARLA_BUILD_FOLDER} >/dev/null
UNCRUSTIFY_BASENAME=uncrustify-0.69.0
UNCRUSTIFY=${PWD}/${UNCRUSTIFY_BASENAME}-install/bin/uncrustify
if [[ -d "${UNCRUSTIFY_BASENAME}-install" ]] ; then
log "${UNCRUSTIFY_BASENAME} already installed."
else
rm -Rf ${UNCRUSTIFY_BASENAME}-source ${UNCRUSTIFY_BASENAME}-build
log "Retrieving Uncrustify."
git clone --depth=1 -b ${UNCRUSTIFY_BASENAME} https://github.com/uncrustify/uncrustify.git ${UNCRUSTIFY_BASENAME}-source
log "Building Uncrustify."
mkdir -p ${UNCRUSTIFY_BASENAME}-build
pushd ${UNCRUSTIFY_BASENAME}-build >/dev/null
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="../${UNCRUSTIFY_BASENAME}-install" \
../${UNCRUSTIFY_BASENAME}-source
ninja
ninja install
popd >/dev/null
rm -Rf ${UNCRUSTIFY_BASENAME}-source ${UNCRUSTIFY_BASENAME}-build
fi
command -v ${UNCRUSTIFY} >/dev/null 2>&1 || {
fatal_error "Failed to install Uncrustify!";
}
popd >/dev/null
command -v autopep8 >/dev/null 2>&1 || {
log "Installing autopep8 for this user."
pip3 install --user autopep8
}
# ==============================================================================
# -- Run uncrustify and/or autopep8 --------------------------------------------
# ==============================================================================
UNCRUSTIFY_CONFIG=${CARLA_BUILD_TOOLS_FOLDER}/uncrustify.cfg
UNCRUSTIFY_UE4_CONFIG=${CARLA_BUILD_TOOLS_FOLDER}/uncrustify-ue4.cfg
UNCRUSTIFY_COMMAND="${UNCRUSTIFY} --no-backup --replace"
AUTOPEP8_COMMAND="autopep8 --jobs 0 --in-place -a"
if ${PRETTIFY_ALL} ; then
fatal_error "Prettify all not yet supported"
# find ${CARLA_ROOT_FOLDER} -iregex '.*\.\(py\)$' -exec ${AUTOPEP8_COMMAND} {} +
# find ${LIBCARLA_ROOT_FOLDER} -iregex '.*\.\(h\|cpp\)$' -exec ${UNCRUSTIFY_COMMAND} {} \;
elif [[ -f ${PRETTIFY_FILE} ]] ; then
if [[ ${PRETTIFY_FILE} == *.py ]] ; then
log "autopep8 ${PRETTIFY_FILE}"
${AUTOPEP8_COMMAND} ${PRETTIFY_FILE}
elif [[ ${PRETTIFY_FILE} == *Unreal/CarlaUE4/* ]] ; then
log "uncrustify for UE4 ${PRETTIFY_FILE}"
${UNCRUSTIFY_COMMAND} -c ${UNCRUSTIFY_UE4_CONFIG} ${PRETTIFY_FILE}
else
log "uncrustify ${PRETTIFY_FILE}"
${UNCRUSTIFY_COMMAND} -c ${UNCRUSTIFY_CONFIG} ${PRETTIFY_FILE}
fi
fi
# ==============================================================================
# -- ...and we are done --------------------------------------------------------
# ==============================================================================
log "Success!"