Skip to content

Commit f89fb2a

Browse files
committed
update
1 parent 7fac5be commit f89fb2a

2 files changed

Lines changed: 4 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## 📜 Version History
22

3+
### v3.5.3 (2026-02-27)
4+
- Address issue #61, issue querying computer EAs.
5+
36
### v3.5.2 (2026-02-09)
47
- Address issue #60, app hanging if no groups are present.
58

Prune.xcodeproj/xcshareddata/xcschemes/Prune.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
9797
<ActionContent
9898
title = "Run Script"
99-
scriptText = "# notarytool credentials.&#10;# AC_PASSWORD is the name of the keychain item created with `notarytool store-credentials`.&#10;# Grant keychain access to Xcode if prompted by Xcode.&#10;AC_PASSWORD=&quot;nt_password&quot;&#10;currentUser=$(stat -f%Su /dev/console)&#10;&#10;# Do all of the work in a subdirectory of /tmp, and use a&#10;# unique ID so that there&apos;s no collision with previous builds.&#10;##EXPORT_UUID=`uuidgen`&#10;##EXPORT_PATH=&quot;/tmp/$PRODUCT_NAME-$EXPORT_UUID/&quot;&#10;osascript -e &apos;display notification &quot;Starting build process&quot;&apos;&#10;&#10;## create folder to hold exported app&#10;newMajor=&quot;$(date -u +%Y%m%d)&quot;&#10;date24H=$(date -u +%H%M)&#10;tmpMinor=$(printf &quot;%x\n&quot; $(echo $date24H | sed &apos;s/^0*//&apos;))&#10;newMinor=$(echo $tmpMinor | tr &apos;[:lower:]&apos; &apos;[:upper:]&apos;)&#10;newBuildNumber=&quot;$newMajor-$newMinor&quot;&#10;&#10;shortVer=&quot;v${MARKETING_VERSION}&quot;&#10;exeName=&quot;${EXECUTABLE_NAME}&quot;&#10;EXPORT_PATH=&quot;/Users/$currentUser/Documents/Xcode-Projects/$exeName/$shortVer/$newBuildNumber&quot;&#10;APP_PATH=&quot;$EXPORT_PATH/$PRODUCT_NAME.app&quot;&#10;DMG_PATH=&quot;$EXPORT_PATH/${PRODUCT_NAME}_${shortVer}.dmg&quot;&#10;ZIP_PATH=&quot;$EXPORT_PATH/${PRODUCT_NAME}_${shortVer}.zip&quot;&#10;&#10;osascript -e &apos;display notification &quot;create export path&quot;&apos;&#10;mkdir -p &quot;$EXPORT_PATH&quot;&#10;&#10;# Xcode doesn&apos;t show run script errors in build log.&#10;exec &gt; &quot;$EXPORT_PATH/Xcode run script.log&quot; 2&gt;&amp;1&#10;open &quot;$EXPORT_PATH/Xcode run script.log&quot;&#10;&#10;# Use osascript(1) to present notification banners; otherwise&#10;# there&apos;s no progress indication until the script finishes.&#10;/usr/bin/osascript -e &apos;display notification &quot;Exporting application archive&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Ask xcodebuild(1) to export the app. Use the export options&#10;# from a previous manual export that used a Developer ID.&#10;##/usr/bin/xcodebuild -exportArchive -archivePath &quot;$ARCHIVE_PATH&quot; -exportOptionsPlist &quot;$SRCROOT/ExportOptions.plist&quot; -exportPath &quot;$EXPORT_PATH&quot;&#10;/usr/bin/xcodebuild -allowProvisioningUpdates -exportArchive -archivePath &quot;$ARCHIVE_PATH&quot; -exportOptionsPlist &quot;/Users/$currentUser/Documents/GitHub/ExportOptions.plist&quot; -exportPath &quot;$EXPORT_PATH/&quot;&#10;&#10;osascript -e &apos;display notification &quot;Creating UDIF Disk Image&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Create a UDIF bzip2-compressed disk image.&#10;cd &quot;$EXPORT_PATH/&quot;&#10;mkdir &quot;$PRODUCT_NAME&quot;&#10;mv -v &quot;$APP_PATH&quot; &quot;$PRODUCT_NAME&quot;&#10;&#10;/usr/bin/hdiutil create -srcfolder &quot;$PRODUCT_NAME&quot; -format UDBZ &quot;$DMG_PATH&quot;&#10;&#10;osascript -e &apos;display notification &quot;Submitting UDIF Disk Image for notarization&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Submit the finished deliverables for notarization.&#10;# Wait up to 2 hours for a response.&#10;# Use verbose logging in order to file feedback if an error occurs.&#10;## &quot;$DEVELOPER_BIN_DIR/notarytool&quot; submit -p &quot;$AC_PASSWORD&quot; --verbose &quot;$DMG_PATH&quot; --wait --timeout 2h --output-format plist &gt; &quot;NotarizationResponse.plist&quot;&#10;&quot;/Applications/Xcode.app/Contents/Developer/usr/bin/notarytool&quot; submit -p &quot;$AC_PASSWORD&quot; --verbose &quot;$DMG_PATH&quot; --wait --timeout 2h --output-format plist &gt; &quot;NotarizationResponse.plist&quot;&#10;&#10;return_code=$?&#10;&#10;if [ $return_code -eq 0 ]; then&#10; message=`/usr/libexec/PlistBuddy -c &quot;Print :message&quot; &quot;NotarizationResponse.plist&quot;`&#10; status=`/usr/libexec/PlistBuddy -c &quot;Print :status&quot; &quot;NotarizationResponse.plist&quot;`&#10;else&#10; message=&quot;An Error Occurred.&quot;&#10; status=&quot;Check Xcode log.&quot;&#10;## open &quot;$EXPORT_PATH/Xcode run script.log&quot;&#10;fi&#10;&#10;# Show and speak the final status.&#10;osascript -e &quot;on run(argv)&quot; \&#10;-e &apos;display notification item 1 of argv &amp; &quot; : &quot; &amp; item 2 of argv with title &quot;Submitting app for notarization&quot; sound name &quot;Crystal&quot;&apos; \&#10;-e &apos;set text item delimiters to &quot;, &quot;&apos; \&#10;-e &quot;set args to argv as text&quot; \&#10;-e &quot;say args&quot; \&#10;-e &quot;delay 5&quot; \&#10;-e &quot;end&quot; \&#10;-- &quot;$message&quot; &quot;$status&quot;&#10;&#10;wait 5&#10;xcrun stapler staple &quot;$PRODUCT_NAME/$PRODUCT_NAME.app&quot;&#10;xcrun stapler staple &quot;${PRODUCT_NAME}_${shortVer}.dmg&quot;&#10;&#10;if [ -e &quot;$ZIP_PATH&quot; ];then&#10; rm -f &quot;$ZIP_PATH&quot;&#10;fi&#10;/usr/bin/ditto -c -k --keepParent &quot;$PRODUCT_NAME/$PRODUCT_NAME.app&quot; &quot;$ZIP_PATH&quot;&#10;&#10;# Open the folder that was created, which also signals completion.&#10;open &quot;$EXPORT_PATH&quot;&#10;&#10;&#10;&#10;&#10;&#10;">
99+
scriptText = "# notarytool credentials.&#10;# AC_PASSWORD is the name of the keychain item created with `notarytool store-credentials`.&#10;# Grant keychain access to Xcode if prompted by Xcode.&#10;AC_PASSWORD=&quot;nt_password&quot;&#10;currentUser=$(stat -f%Su /dev/console)&#10;&#10;# Do all of the work in a subdirectory of /tmp, and use a&#10;# unique ID so that there&apos;s no collision with previous builds.&#10;##EXPORT_UUID=`uuidgen`&#10;##EXPORT_PATH=&quot;/tmp/$PRODUCT_NAME-$EXPORT_UUID/&quot;&#10;osascript -e &apos;display notification &quot;Starting build process&quot;&apos;&#10;&#10;## create folder to hold exported app&#10;newMajor=&quot;$(date -u +%Y%m%d)&quot;&#10;date24H=$(date -u +%H%M)&#10;tmpMinor=$(printf &quot;%x\n&quot; $(echo $date24H | sed &apos;s/^0*//&apos;))&#10;newMinor=$(echo $tmpMinor | tr &apos;[:lower:]&apos; &apos;[:upper:]&apos;)&#10;newBuildNumber=&quot;$newMajor-$newMinor&quot;&#10;&#10;shortVer=&quot;v${MARKETING_VERSION}&quot;&#10;exeName=&quot;${EXECUTABLE_NAME}&quot;&#10;EXPORT_PATH=&quot;/Users/$currentUser/Documents/Xcode-Projects/$exeName/$shortVer/$newBuildNumber&quot;&#10;APP_PATH=&quot;$EXPORT_PATH/$PRODUCT_NAME.app&quot;&#10;DMG_PATH=&quot;$EXPORT_PATH/${PRODUCT_NAME}_${shortVer}.dmg&quot;&#10;ZIP_PATH=&quot;$EXPORT_PATH/${PRODUCT_NAME}.zip&quot;&#10;&#10;osascript -e &apos;display notification &quot;create export path&quot;&apos;&#10;mkdir -p &quot;$EXPORT_PATH&quot;&#10;&#10;# Xcode doesn&apos;t show run script errors in build log.&#10;exec &gt; &quot;$EXPORT_PATH/Xcode run script.log&quot; 2&gt;&amp;1&#10;open &quot;$EXPORT_PATH/Xcode run script.log&quot;&#10;&#10;# Use osascript(1) to present notification banners; otherwise&#10;# there&apos;s no progress indication until the script finishes.&#10;/usr/bin/osascript -e &apos;display notification &quot;Exporting application archive&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Ask xcodebuild(1) to export the app. Use the export options&#10;# from a previous manual export that used a Developer ID.&#10;##/usr/bin/xcodebuild -exportArchive -archivePath &quot;$ARCHIVE_PATH&quot; -exportOptionsPlist &quot;$SRCROOT/ExportOptions.plist&quot; -exportPath &quot;$EXPORT_PATH&quot;&#10;/usr/bin/xcodebuild -allowProvisioningUpdates -exportArchive -archivePath &quot;$ARCHIVE_PATH&quot; -exportOptionsPlist &quot;/Users/$currentUser/Documents/GitHub/ExportOptions.plist&quot; -exportPath &quot;$EXPORT_PATH/&quot;&#10;&#10;osascript -e &apos;display notification &quot;Creating UDIF Disk Image&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Create a UDIF bzip2-compressed disk image.&#10;cd &quot;$EXPORT_PATH/&quot;&#10;mkdir &quot;$PRODUCT_NAME&quot;&#10;mv -v &quot;$APP_PATH&quot; &quot;$PRODUCT_NAME&quot;&#10;&#10;/usr/bin/hdiutil create -srcfolder &quot;$PRODUCT_NAME&quot; -format UDBZ &quot;$DMG_PATH&quot;&#10;&#10;osascript -e &apos;display notification &quot;Submitting UDIF Disk Image for notarization&#x2026;&quot; with title &quot;Submitting app for notarization&quot;&apos;&#10;&#10;# Submit the finished deliverables for notarization.&#10;# Wait up to 2 hours for a response.&#10;# Use verbose logging in order to file feedback if an error occurs.&#10;## &quot;$DEVELOPER_BIN_DIR/notarytool&quot; submit -p &quot;$AC_PASSWORD&quot; --verbose &quot;$DMG_PATH&quot; --wait --timeout 2h --output-format plist &gt; &quot;NotarizationResponse.plist&quot;&#10;&quot;/Applications/Xcode.app/Contents/Developer/usr/bin/notarytool&quot; submit -p &quot;$AC_PASSWORD&quot; --verbose &quot;$DMG_PATH&quot; --wait --timeout 2h --output-format plist &gt; &quot;NotarizationResponse.plist&quot;&#10;&#10;return_code=$?&#10;&#10;if [ $return_code -eq 0 ]; then&#10; message=`/usr/libexec/PlistBuddy -c &quot;Print :message&quot; &quot;NotarizationResponse.plist&quot;`&#10; status=`/usr/libexec/PlistBuddy -c &quot;Print :status&quot; &quot;NotarizationResponse.plist&quot;`&#10;else&#10; message=&quot;An Error Occurred.&quot;&#10; status=&quot;Check Xcode log.&quot;&#10;## open &quot;$EXPORT_PATH/Xcode run script.log&quot;&#10;fi&#10;&#10;# Show and speak the final status.&#10;osascript -e &quot;on run(argv)&quot; \&#10;-e &apos;display notification item 1 of argv &amp; &quot; : &quot; &amp; item 2 of argv with title &quot;Submitting app for notarization&quot; sound name &quot;Crystal&quot;&apos; \&#10;-e &apos;set text item delimiters to &quot;, &quot;&apos; \&#10;-e &quot;set args to argv as text&quot; \&#10;-e &quot;say args&quot; \&#10;-e &quot;delay 5&quot; \&#10;-e &quot;end&quot; \&#10;-- &quot;$message&quot; &quot;$status&quot;&#10;&#10;wait 5&#10;xcrun stapler staple &quot;$PRODUCT_NAME/$PRODUCT_NAME.app&quot;&#10;xcrun stapler staple &quot;${PRODUCT_NAME}_${shortVer}.dmg&quot;&#10;&#10;if [ -e &quot;$ZIP_PATH&quot; ];then&#10; rm -f &quot;$ZIP_PATH&quot;&#10;fi&#10;/usr/bin/ditto -c -k --keepParent &quot;$PRODUCT_NAME/$PRODUCT_NAME.app&quot; &quot;$ZIP_PATH&quot;&#10;&#10;# Open the folder that was created, which also signals completion.&#10;open &quot;$EXPORT_PATH&quot;&#10;&#10;&#10;&#10;&#10;&#10;">
100100
<EnvironmentBuildable>
101101
<BuildableReference
102102
BuildableIdentifier = "primary"

0 commit comments

Comments
 (0)