mirror of
https://github.com/Ed94/VEFontCache-Odin.git
synced 2025-08-06 06:52:44 -07:00
112 lines
2.8 KiB
Bash
112 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
clone_gitrepo() {
|
|
local path="$1"
|
|
local url="$2"
|
|
|
|
if [ -d "$path" ]; then
|
|
# git -C "$path" pull
|
|
:
|
|
else
|
|
echo "Cloning $url ..."
|
|
git clone "$url" "$path"
|
|
fi
|
|
}
|
|
|
|
get_ini_content() {
|
|
local path_file="$1"
|
|
declare -A ini
|
|
|
|
local current_section=""
|
|
while IFS= read -r line; do
|
|
if [[ $line =~ ^\[(.+)\]$ ]]; then
|
|
current_section="${BASH_REMATCH[1]}"
|
|
ini["$current_section"]=""
|
|
elif [[ $line =~ ^([^=]+)=(.*)$ ]]; then
|
|
local key="${BASH_REMATCH[1]}"
|
|
local value="${BASH_REMATCH[2]}"
|
|
if [ -n "$current_section" ]; then
|
|
ini["$current_section,$key"]="$value"
|
|
fi
|
|
fi
|
|
done < "$path_file"
|
|
|
|
# To use this function, you would need to pass the result by reference
|
|
# and then access it in the calling function
|
|
}
|
|
|
|
invoke_with_color_coded_output() {
|
|
local command="$1"
|
|
eval "$command" 2>&1 | while IFS= read -r line; do
|
|
if [[ "$line" =~ [Ee]rror ]]; then
|
|
echo -e "\033[0;31m\t$line\033[0m" # Red for errors
|
|
elif [[ "$line" =~ [Ww]arning ]]; then
|
|
echo -e "\033[0;33m\t$line\033[0m" # Yellow for warnings
|
|
else
|
|
echo -e "\033[0;37m\t$line\033[0m" # White for other output
|
|
fi
|
|
done
|
|
}
|
|
|
|
update_git_repo() {
|
|
local path="$1"
|
|
local url="$2"
|
|
local build_command="$3"
|
|
|
|
if [ -z "$build_command" ]; then
|
|
echo "Attempted to call update_git_repo without build_command specified"
|
|
return
|
|
fi
|
|
|
|
local repo_name=$(basename "$url" .git)
|
|
|
|
local last_built_commit="$path_build/last_built_commit_$repo_name.txt"
|
|
if [ ! -d "$path" ]; then
|
|
echo "Cloning repo from $url to $path"
|
|
git clone "$url" "$path"
|
|
|
|
echo "Building $url"
|
|
pushd "$path" > /dev/null
|
|
chmod +x "$build_command"
|
|
eval "$build_command"
|
|
popd > /dev/null
|
|
|
|
git -C "$path" rev-parse HEAD > "$last_built_commit"
|
|
binaries_dirty=true
|
|
echo
|
|
return
|
|
fi
|
|
|
|
git -C "$path" fetch
|
|
local latest_commit_hash=$(git -C "$path" rev-parse '@{u}')
|
|
local last_built_hash=""
|
|
[ -f "$last_built_commit" ] && last_built_hash=$(cat "$last_built_commit")
|
|
|
|
if [ "$latest_commit_hash" = "$last_built_hash" ]; then
|
|
echo
|
|
return
|
|
fi
|
|
|
|
echo "Build out of date for: $path, updating"
|
|
echo 'Pulling...'
|
|
git -C "$path" pull
|
|
|
|
echo "Building $url"
|
|
pushd "$path" > /dev/null
|
|
chmod +x "$build_command"
|
|
eval "$build_command"
|
|
popd > /dev/null
|
|
|
|
echo "$latest_commit_hash" > "$last_built_commit"
|
|
binaries_dirty=true
|
|
echo
|
|
}
|
|
|
|
verify_path() {
|
|
local path="$1"
|
|
if [ ! -d "$path" ]; then
|
|
mkdir -p "$path"
|
|
echo "Created directory: $path"
|
|
fi
|
|
}
|