-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpublish-release.sh
More file actions
executable file
Β·112 lines (92 loc) Β· 2.99 KB
/
publish-release.sh
File metadata and controls
executable file
Β·112 lines (92 loc) Β· 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
# Apple Intelligence API Release Publisher
# Creates an optimized release build and packages it as tar.gz
set -e # Exit on any error
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_NAME="AppleIntelligenceAPI"
RELEASE_DIR="${PROJECT_DIR}/releases"
TEMP_BUILD_DIR="/tmp/${PROJECT_NAME}-build-$$"
ARCHIVE_PATH="${TEMP_BUILD_DIR}/${PROJECT_NAME}.xcarchive"
EXPORT_PATH="${TEMP_BUILD_DIR}/export"
FINAL_TARBALL="${RELEASE_DIR}/${PROJECT_NAME}-Release.tar.gz"
echo "π Starting Apple Intelligence API release build..."
echo "π Project directory: ${PROJECT_DIR}"
# Create releases directory if it doesn't exist
echo "π Creating releases directory..."
mkdir -p "${RELEASE_DIR}"
# Clean up any existing build artifacts
echo "π§Ή Cleaning up previous builds..."
rm -rf "${TEMP_BUILD_DIR}"
rm -f "${FINAL_TARBALL}"
# Create temporary build directory
mkdir -p "${TEMP_BUILD_DIR}"
# Clean and build the archive
echo "π¨ Building optimized release archive..."
cd "${PROJECT_DIR}"
xcodebuild clean > /dev/null 2>&1
xcodebuild -project "${PROJECT_NAME}.xcodeproj" \
-scheme "${PROJECT_NAME}" \
-configuration Release \
-archivePath "${ARCHIVE_PATH}" \
archive \
SWIFT_OPTIMIZATION_LEVEL="-Osize" \
DEPLOYMENT_POSTPROCESSING=YES \
STRIP_INSTALLED_PRODUCT=YES \
COPY_PHASE_STRIP=NO \
> /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "β Archive build failed!"
rm -rf "${TEMP_BUILD_DIR}"
exit 1
fi
echo "β
Archive build completed successfully"
# Create export options plist
EXPORT_PLIST="${TEMP_BUILD_DIR}/export-options.plist"
cat > "${EXPORT_PLIST}" << 'EOF'
<?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>method</key>
<string>mac-application</string>
<key>stripSwiftSymbols</key>
<true/>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
EOF
# Export the app
echo "π¦ Exporting application..."
xcodebuild -exportArchive \
-archivePath "${ARCHIVE_PATH}" \
-exportPath "${EXPORT_PATH}" \
-exportOptionsPlist "${EXPORT_PLIST}" \
> /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "β Export failed!"
rm -rf "${TEMP_BUILD_DIR}"
exit 1
fi
echo "β
Export completed successfully"
# Create the tar.gz file
echo "π Creating tar.gz archive..."
cd "${EXPORT_PATH}"
tar -czf "${FINAL_TARBALL}" "${PROJECT_NAME}.app"
if [ $? -ne 0 ]; then
echo "β Failed to create tar.gz!"
rm -rf "${TEMP_BUILD_DIR}"
exit 1
fi
# Get file size
FILE_SIZE=$(du -h "${FINAL_TARBALL}" | cut -f1)
# Clean up temporary files
rm -rf "${TEMP_BUILD_DIR}"
echo "β
Release build completed successfully!"
echo ""
echo "π Build Summary:"
echo " β’ File: ${PROJECT_NAME}-Release.tar.gz"
echo " β’ Size: ${FILE_SIZE}"
echo " β’ Location: ${RELEASE_DIR}/"
echo ""
echo "π Ready for distribution!"