-
Notifications
You must be signed in to change notification settings - Fork 229
/
notarize.command
executable file
·79 lines (61 loc) · 2.79 KB
/
notarize.command
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
#!/bin/bash
basedir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Assumes ~/.bash_profile is set correctly, e.g.
# CODE_SIGN_SIGNATURE="Developer ID Application: John Doe"
# DCM2NIIX_SPECIFIC_PASSWORD=bbzj-zowb-bzji-ynkl
# export APPLE_ID_USER DCM2NIIX_SPECIFIC_PASSWORD CODE_SIGN_SIGNATURE
CODE_SIGN_SIGNATURE=$CODE_SIGN_SIGNATURE
APPLE_ID_USER=$APPLE_ID_USER
APP_SPECIFIC_PASSWORD=$DCM2NIIX_SPECIFIC_PASSWORD
cd ${basedir}
mkdir build && cd build
cmake -DZLIB_IMPLEMENTATION=Cloudflare -DUSE_JPEGLS=ON -DUSE_OPENJPEG=ON ..
make
cd bin
# Clean up temporary files
rm -f dcm2niix_macOS.dmg
rm -f upload_log_file.txt
rm -f request_log_file.txt
rm -f log_file.txt
# https://stackoverflow.com/questions/2870992/automatic-exit-from-bash-shell-script-on-error
# terminate on error
set -e
echo "Verifying Info.plist"
launchctl plist dcm2niix
echo "Code signing dcm2niix..."
codesign -vvv --force --strict --options=runtime --timestamp -s "$CODE_SIGN_SIGNATURE" dcm2niix
codesign --verify --verbose --strict dcm2niix
echo "Creating disk image..."
hdiutil create -volname dcm2niix -srcfolder `pwd` -ov -format UDZO -layout SPUD -fs HFS+J dcm2niix_macOS.dmg
# Notarizing with Apple...
echo "Uploading..."
xcrun altool --notarize-app -t osx --file dcm2niix_macOS.dmg --primary-bundle-id com.mricro.dcm2niix -u $APPLE_ID_USER -p $APP_SPECIFIC_PASSWORD --output-format xml > upload_log_file.txt
# WARNING: if there is a 'product-errors' key in upload_log_file.txt something went wrong
# we could parse it here and bail but not sure how to check for keys existing with PListBuddy
# /usr/libexec/PlistBuddy -c "Print :product-errors:0:message" upload_log_file.txt
# now we need to query apple's server to the status of notarization
# when the "xcrun altool --notarize-app" command is finished the output plist
# will contain a notarization-upload->RequestUUID key which we can use to check status
echo "Checking status..."
sleep 20
REQUEST_UUID=`/usr/libexec/PlistBuddy -c "Print :notarization-upload:RequestUUID" upload_log_file.txt`
while true; do
xcrun altool --notarization-info $REQUEST_UUID -u $APPLE_ID_USER -p $APP_SPECIFIC_PASSWORD --output-format xml > request_log_file.txt
# parse the request plist for the notarization-info->Status Code key which will
# be set to "success" if the package was notarized
STATUS=`/usr/libexec/PlistBuddy -c "Print :notarization-info:Status" request_log_file.txt`
if [ "$STATUS" != "in progress" ]; then
break
fi
# echo $STATUS
echo "$STATUS"
sleep 10
done
# download the log file to view any issues
/usr/bin/curl -o log_file.txt `/usr/libexec/PlistBuddy -c "Print :notarization-info:LogFileURL" request_log_file.txt`
# staple
echo "Stapling..."
xcrun stapler staple dcm2niix_macOS.dmg
xcrun stapler validate dcm2niix_macOS.dmg
open log_file.txt