mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
122 lines
4.2 KiB
Bash
122 lines
4.2 KiB
Bash
#!/bin/bash
|
|
|
|
on_error() {
|
|
local parent_lineno="$1"
|
|
local message="$2"
|
|
local code="${3:-1}"
|
|
if [[ -n "$message" ]] ; then
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
echo "!!! Error on or near line ${parent_lineno}: ${message}; exiting with status ${code}"
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
else
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
echo "!!! Error on or near line ${parent_lineno}; exiting with status ${code}"
|
|
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
fi
|
|
exit "${code}"
|
|
}
|
|
trap 'on_error ${LINENO}' ERR
|
|
|
|
# prepare src dir via sparse checkout of spine-runtimes repo.
|
|
prepare_sparse_checkout_dir() {
|
|
|
|
trap 'on_error ${LINENO}' ERR
|
|
|
|
local out_commit_hash=$1
|
|
local git_root_url="$2"
|
|
local git_branch="$3"
|
|
local git_subdir="$4"
|
|
local commit_hash="$5"
|
|
local dst_dir="$6"
|
|
local gitattributes_file="$7"
|
|
local prev_cwd=$(pwd)
|
|
|
|
echo Preparing sparse checkout directory $dst_dir.
|
|
mkdir -p "$dst_dir"
|
|
cp "$gitattributes_file" "${dst_dir}/.gitattributes"
|
|
|
|
cd "$dst_dir"
|
|
|
|
if [ ! -d ".git" ]; then
|
|
git init .
|
|
git config core.sparseCheckout true
|
|
# note: we want crlf in this repo since we got the most recent unitypackage commits
|
|
# with crlf and want to minimize changes in submitted unitypackages.
|
|
git config core.autocrlf true
|
|
git remote add -f origin "${git_root_url}"
|
|
echo "${git_subdir}/" > .git/info/sparse-checkout
|
|
git checkout -f "${git_branch}"
|
|
fi
|
|
|
|
git pull
|
|
git reset --hard "${commit_hash}"
|
|
git clean -f -d
|
|
out_hash=$(git rev-parse HEAD)
|
|
eval "$out_commit_hash='${out_hash}'"
|
|
|
|
cd "${prev_cwd}"
|
|
}
|
|
|
|
convert_file_line_ending() {
|
|
|
|
local file="$1"
|
|
# note: lf_handling = "conservative", "unify-to-crlf" or "unify-to-lf"
|
|
local lf_handling="$2"
|
|
|
|
# note: dos2unix will skip binary files, nevertheless we want to be conservative and check above
|
|
file -bL --mime "${file}" | grep -q '^text'
|
|
local grep_text_retval=$?
|
|
if [ "${grep_text_retval}" == 0 ]; then
|
|
|
|
local extension="${file##*.}"
|
|
#local first_5_chars=$(head -c 5 "${file}")
|
|
if ( [ "$extension" == "cs" ] || [ "$extension" == "json" ] || [ "$extension" == "txt" ] \
|
|
|| [ "$extension" == "cginc" ] || [ "$extension" == "asmdef" ] \
|
|
|| [ "$extension" == "shader" ] || [ "$extension" == "md" ] ); then
|
|
|
|
local newline_count=`wc -l < "${file}"`
|
|
local windows_cr_count=`grep -ac $'\r' "${file}"`
|
|
if [ "$lf_handling" == "conservative" ]; then
|
|
# convert only mixed ending files, convert to lf
|
|
if [ ${windows_cr_count} -gt "0" ] && [ ${newline_count} != ${windows_cr_count} ]; then
|
|
# mixed line endings
|
|
# echo ${file} has cr count ${windows_cr_count}
|
|
dos2unix "${file}"
|
|
echo Converted mixed line-ending file ${file} to lf.
|
|
fi
|
|
elif [ "$lf_handling" == "unify-to-crlf" ]; then
|
|
if [ ${newline_count} != ${windows_cr_count} ]; then
|
|
unix2dos "${file}"
|
|
echo Converted file ${file} to crlf.
|
|
fi
|
|
elif [ "$lf_handling" == "unify-to-lf" ]; then
|
|
if [ ${windows_cr_count} -gt "0" ]; then
|
|
dos2unix "${file}"
|
|
echo Converted file ${file} to lf.
|
|
fi
|
|
fi
|
|
elif ( [ "$extension" == "meta" ] || [ "$extension" == "mat" ] || [ "$extension" == "unity" ] \
|
|
|| [ "$extension" == "physicsMaterial2D" ] || [ "$extension" == "physicsMaterial" ] \
|
|
|| [ "$extension" == "asset" ] || [ "$extension" == "controller" ] ); then
|
|
|
|
# unity serialized files are always lf
|
|
local windows_cr_count=`grep -ac $'\r' "${file}"`
|
|
if [ ${windows_cr_count} -gt "0" ]; then
|
|
dos2unix "${file}"
|
|
echo Converted file ${file} to lf.
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
convert_all_files_line_endings_of_dir() {
|
|
local path="$1"
|
|
local lf_handling="$2"
|
|
|
|
find "$path" -type f |
|
|
while read file ; do
|
|
convert_file_line_ending "${file}" "${lf_handling}"
|
|
done
|
|
}
|
|
|