mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 21:53:41 +00:00
90 lines
2.9 KiB
Bash
Executable file
90 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
SOURCE="${BASH_SOURCE[0]}"
|
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
SOURCE="$(readlink "$SOURCE")"
|
|
[[ $SOURCE != /* ]] && SOURCE="$SCRIPT_DIR/$SOURCE"
|
|
# if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
done
|
|
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
|
echo "$SCRIPT_DIR"
|
|
|
|
dir2analyze="$SCRIPT_DIR/../../src"
|
|
analyzeC="false";
|
|
files_to_update="";
|
|
|
|
printHelp() {
|
|
echo "Script for automatic fixing some coding style rules issues."
|
|
echo "In case of any issues of analysed code, the script would adjust it to follow"
|
|
echo "coding style. THIS COULD CHANGE YOUR FILES. Please commit your changes locally"
|
|
echo "if you want to have meaningful changes divided from style-only changes"
|
|
echo "Using it without specifying a path would analyse \"src\" from current directory."
|
|
printf -- "\nUsage: %s [directory] [options ...]\n" "$(basename "$0")"
|
|
printf -- "Options:\n"
|
|
printf -- "-u\t\tcheck all C/C++ files that has been modified since last commit and fix issues\n"
|
|
printf -- "-c\t\tcheck C/C++ files and fix issues\n"
|
|
printf -- "-a [--all]\tcheck all C/C++ files and fix issues\n"
|
|
printf -- "-h [--help]\tshow this help\n"
|
|
echo "When using any of 'u' options, all not commited files will be backed up."
|
|
}
|
|
|
|
formatC++() {
|
|
path="$(readlink -f "$1")"
|
|
if [[ "$analyzeC" == "true" ]]; then
|
|
echo "Reformatting C++ sources recursively for directory $path";
|
|
"$SCRIPT_DIR/c++_clang_formatter.sh" "$path";
|
|
else
|
|
echo "no C++ sources reformatting - please use '-c' option to enable it";
|
|
fi
|
|
}
|
|
|
|
backupUpdatedFiles() {
|
|
files_to_update="$(git diff-index -z --name-only --diff-filter=AM HEAD --)";
|
|
if [[ "$files_to_update" == "" ]]; then
|
|
echo "There are no updated files to format";
|
|
exit;
|
|
fi
|
|
time_stamp=$(date +%Y-%m-%d-%T);
|
|
dir_name="backup_${time_stamp}";
|
|
echo "Creating backup of not commited changes in directory: $dir_name";
|
|
mkdir -p "${dir_name}";
|
|
while IFS= read -r -d '' file; do
|
|
cp -- "$file" "$dir_name";
|
|
done <<< "$files_to_update"
|
|
}
|
|
|
|
formatUpdatedC++() {
|
|
if [[ "$files_to_update" == "" ]]; then
|
|
exit
|
|
fi
|
|
echo "Reformatting C++ sources from list:";
|
|
git diff-index --name-only --diff-filter=AM HEAD --;
|
|
"$SCRIPT_DIR/c++_clang_formatter.sh" -u;
|
|
}
|
|
|
|
for arg in "$@";
|
|
do
|
|
if [[ "$arg" == "-u" ]]; then
|
|
backupUpdatedFiles
|
|
formatUpdatedC++
|
|
exit
|
|
elif [[ "$arg" == "-c" ]]; then
|
|
analyzeC="true";
|
|
elif [[ "$arg" == "--all" ]] || [[ "$arg" == "-a" ]]; then
|
|
analyzeC="true";
|
|
elif [[ "$arg" == "--help" ]] || [[ "$arg" == "-h" ]]; then
|
|
printHelp
|
|
exit
|
|
else
|
|
if [[ -d "$arg" ]]; then
|
|
dir2analyze="$arg";
|
|
else
|
|
(>&2 printf "ERROR: directory %s does not exist\n\n" "$arg")
|
|
printHelp
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
formatC++ "$dir2analyze"
|