forked from jsnbuchanan/crowd-funder-for-time-pwa
add a privacy-fixer project that may have fixed the GoogleToolboxForMac privacy manifext problem
https://github.com/crasowas/app_privacy_manifest_fixer
This commit is contained in:
125
ios/App/app_privacy_manifest_fixer/Common/utils.sh
Executable file
125
ios/App/app_privacy_manifest_fixer/Common/utils.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (c) 2025, crasowas.
|
||||
#
|
||||
# Use of this source code is governed by a MIT-style license
|
||||
# that can be found in the LICENSE file or at
|
||||
# https://opensource.org/licenses/MIT.
|
||||
|
||||
set -e
|
||||
|
||||
# Prevent duplicate loading
|
||||
if [ -n "$UTILS_SH_LOADED" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
readonly UTILS_SH_LOADED=1
|
||||
|
||||
# Absolute path of the script and the tool's root directory
|
||||
script_path="$(realpath "${BASH_SOURCE[0]}")"
|
||||
tool_root_path="$(dirname "$(dirname "$script_path")")"
|
||||
|
||||
# Load common constants
|
||||
source "$tool_root_path/Common/constants.sh"
|
||||
|
||||
# Print the elements of an array along with their indices
|
||||
function print_array() {
|
||||
local -a array=("$@")
|
||||
|
||||
for ((i=0; i<${#array[@]}; i++)); do
|
||||
echo "[$i] $(decode_path "${array[i]}")"
|
||||
done
|
||||
}
|
||||
|
||||
# Split a string into substrings using a specified delimiter
|
||||
function split_string_by_delimiter() {
|
||||
local string="$1"
|
||||
local -a substrings=()
|
||||
|
||||
IFS="$DELIMITER" read -ra substrings <<< "$string"
|
||||
|
||||
echo "${substrings[@]}"
|
||||
}
|
||||
|
||||
# Encode a path string by replacing space with an escape character
|
||||
function encode_path() {
|
||||
echo "$1" | sed "s/ /$SPACE_ESCAPE/g"
|
||||
}
|
||||
|
||||
# Decode a path string by replacing encoded character with space
|
||||
function decode_path() {
|
||||
echo "$1" | sed "s/$SPACE_ESCAPE/ /g"
|
||||
}
|
||||
|
||||
# Get the dependency name by removing common suffixes
|
||||
function get_dependency_name() {
|
||||
local path="$1"
|
||||
|
||||
local dir_name="$(basename "$path")"
|
||||
# Remove `.app`, `.framework`, and `.xcframework` suffixes
|
||||
local dep_name="${dir_name%.*}"
|
||||
|
||||
echo "$dep_name"
|
||||
}
|
||||
|
||||
# Get the executable name from the specified `Info.plist` file
|
||||
function get_plist_executable() {
|
||||
local plist_file="$1"
|
||||
|
||||
if [ ! -f "$plist_file" ]; then
|
||||
echo ""
|
||||
else
|
||||
/usr/libexec/PlistBuddy -c "Print :CFBundleExecutable" "$plist_file" 2>/dev/null || echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Get the version from the specified `Info.plist` file
|
||||
function get_plist_version() {
|
||||
local plist_file="$1"
|
||||
|
||||
if [ ! -f "$plist_file" ]; then
|
||||
echo "$UNKNOWN_VERSION"
|
||||
else
|
||||
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$plist_file" 2>/dev/null || echo "$UNKNOWN_VERSION"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get the path of the specified framework version
|
||||
function get_framework_path() {
|
||||
local path="$1"
|
||||
local version_path="$2"
|
||||
|
||||
if [ -z "$version_path" ]; then
|
||||
echo "$path"
|
||||
else
|
||||
echo "$path/$version_path"
|
||||
fi
|
||||
}
|
||||
|
||||
# Search for privacy manifest files in the specified directory
|
||||
function search_privacy_manifest_files() {
|
||||
local path="$1"
|
||||
local -a privacy_manifest_files=()
|
||||
|
||||
# Create a temporary file to store search results
|
||||
local temp_file="$(mktemp)"
|
||||
|
||||
# Ensure the temporary file is deleted on script exit
|
||||
trap "rm -f $temp_file" EXIT
|
||||
|
||||
# Find privacy manifest files within the specified directory and store the results in the temporary file
|
||||
find "$path" -type f -name "$PRIVACY_MANIFEST_FILE_NAME" -print0 2>/dev/null > "$temp_file"
|
||||
|
||||
while IFS= read -r -d '' file; do
|
||||
privacy_manifest_files+=($(encode_path "$file"))
|
||||
done < "$temp_file"
|
||||
|
||||
echo "${privacy_manifest_files[@]}"
|
||||
}
|
||||
|
||||
# Get the privacy manifest file with the shortest path
|
||||
function get_privacy_manifest_file() {
|
||||
local privacy_manifest_file="$(printf "%s\n" "$@" | awk '{print length, $0}' | sort -n | head -n1 | cut -d ' ' -f2-)"
|
||||
|
||||
echo "$(decode_path "$privacy_manifest_file")"
|
||||
}
|
||||
Reference in New Issue
Block a user