File: notarize.command

package info (click to toggle)
dcm2niix 1.0.20241211-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 34,208 kB
  • sloc: cpp: 25,986; ansic: 4,370; javascript: 347; sh: 130; python: 111; makefile: 49
file content (79 lines) | stat: -rwxr-xr-x 2,857 bytes parent folder | download | duplicates (3)
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"
#  APPLE_ID_USER=doe@gmail.com
#  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