Files
telegram-tui/scripts/build-ios-simulator-app.sh
2026-05-20 22:26:53 +03:00

88 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
package_dir="${repo_root}/apps/ios/TeleTuiIOS"
if [[ -z "${DEVELOPER_DIR:-}" && -d /Applications/Xcode.app/Contents/Developer ]]; then
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
fi
configuration="${IOS_CONFIGURATION:-Debug}"
derived_data="${IOS_DERIVED_DATA:-/private/tmp/tele-tui-ios-derived-data}"
destination="${IOS_DESTINATION:-generic/platform=iOS Simulator}"
bundle_id="${IOS_BUNDLE_ID:-dev.teletui.TeleTuiIOSApp}"
pushd "${package_dir}" >/dev/null
xcodebuild \
-scheme TeleTuiIOSApp \
-destination "${destination}" \
-configuration "${configuration}" \
-derivedDataPath "${derived_data}" \
build
popd >/dev/null
product_dir="${derived_data}/Build/Products/${configuration}-iphonesimulator"
binary_path="${product_dir}/TeleTuiIOSApp"
app_path="${product_dir}/TeleTuiIOSApp.app"
if [[ ! -x "${binary_path}" ]]; then
printf 'Expected simulator executable was not produced: %s\n' "${binary_path}" >&2
exit 1
fi
rm -rf "${app_path}"
mkdir -p "${app_path}"
cp "${binary_path}" "${app_path}/TeleTuiIOSApp"
cp "${package_dir}/Resources/PrivacyInfo.xcprivacy" "${app_path}/PrivacyInfo.xcprivacy"
printf 'APPL????' > "${app_path}/PkgInfo"
cat > "${app_path}/Info.plist" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>TeleTui</string>
<key>CFBundleExecutable</key>
<string>TeleTuiIOSApp</string>
<key>CFBundleIdentifier</key>
<string>${bundle_id}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>TeleTuiIOSApp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchScreen</key>
<dict/>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
PLIST
codesign --force --sign - --timestamp=none "${app_path}/TeleTuiIOSApp" >/dev/null
codesign --force --sign - --timestamp=none "${app_path}" >/dev/null
printf 'Packaged simulator app: %s\n' "${app_path}"