summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkali <kali@leap.se>2021-07-15 17:10:31 +0200
committerkali kaneko (leap communications) <kali@leap.se>2021-07-15 17:23:55 +0200
commit8fd0fcc5eaa9b5fc7692304cdf24560dfb8862ab (patch)
tree9fb77f1ee6b88fb258a5f3fc08f02c3af4eaf074
parentd9131ae8c78519e6c8e17285ae29caa06e704892 (diff)
[pkg] improve stapler script
-rw-r--r--Makefile7
-rwxr-xr-xbranding/scripts/osx-staple-status.py5
-rwxr-xr-xbranding/scripts/osx-staple-uuid.py5
-rwxr-xr-x[-rw-r--r--]branding/scripts/osx-stapler.sh44
4 files changed, 32 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index de3e89a..08021da 100644
--- a/Makefile
+++ b/Makefile
@@ -253,6 +253,11 @@ ifeq (${PLATFORM}, darwin)
ditto -ck --rsrc --sequesterRsrc build/installer/${APPNAME}-installer-${VERSION}.app build/installer/${APPNAME}-installer-${VERSION}.zip
endif
+notarize_all:
+ APPNAME=${APPNAME} VERSION=${VERSION} TARGET=${TARGET} OSXAPPPASS=${OSXAPPPASS} branding/scripts/osx-stapler.sh
+
+# --------------------
+
notarize_installer:
# courtesy of https://skyronic.com/2019/07/app-notarization-for-qt-applications/
ifeq (${PLATFORM}, darwin)
@@ -274,6 +279,8 @@ ifeq (${PLATFORM}, darwin)
@create-dmg deploy/${APPNAME}-${VERSION}.dmg build/installer/${APPNAME}-installer-${VERSION}.app
endif
+# --------------------
+
check_qtifw:
ifdef HAS_QTIFW
diff --git a/branding/scripts/osx-staple-status.py b/branding/scripts/osx-staple-status.py
new file mode 100755
index 0000000..6ee9943
--- /dev/null
+++ b/branding/scripts/osx-staple-status.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python3
+import sys
+arg = sys.argv[1]
+line = [x for x in arg.split('\n') if x.startswith('Status:')]
+print(line[0].split('Status: ')[-1])
diff --git a/branding/scripts/osx-staple-uuid.py b/branding/scripts/osx-staple-uuid.py
new file mode 100755
index 0000000..2db3699
--- /dev/null
+++ b/branding/scripts/osx-staple-uuid.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python3
+import sys
+arg = sys.argv[1]
+line = [x for x in arg.split('\n') if x.startswith('Status:')]
+print(line[0].split('=')[1])
diff --git a/branding/scripts/osx-stapler.sh b/branding/scripts/osx-stapler.sh
index 3069e49..5017f0b 100644..100755
--- a/branding/scripts/osx-stapler.sh
+++ b/branding/scripts/osx-stapler.sh
@@ -1,19 +1,20 @@
#!/bin/bash
# Notes to script notarization steps.
+# To be called from the root folder.
# Taken from https://oozou.com/blog/scripting-notarization-for-macos-app-distribution-38
# TODO: put pass in keychain
+# --password "@keychain:notarization-password"
-# 1. create dmb
-hdiutil create -format UDZO -srcfolder yourFolder YourApp.dmg
+USER=info@leap.se
-# 2. send notarization request
requestInfo=$(xcrun altool --notarize-app \
- --file "YourApp.dmg" \
- --username "yourDeveloperAccountEmail@email.com" \
- --password "@keychain:notarization-password" \
- --asc-provider "yourAppleTeamID" \
- --primary-bundle-id "com.your.app.bundle.id")
+ -t osx -f build/installer/${APPNAME}-installer-${VERSION}.zip \
+ --primary-bundle-id="se.leap.bitmask.${TARGET}" \
+ -u ${USER} \
+ -p ${OSXAPPPASS})
+
+uuid=$(python branding/scripts/osx-get-uuid.py $requestInfo)
current_status = "in progress"
@@ -22,31 +23,16 @@ while [[ "$currentStatus" == "in progress" ]]; do
sleep 15
statusResponse=$(xcrun altool --notarization-info "$uuid" \
- --username "yourDeveloperAccountEmail@email.com" \
- --password "@keychain:notarization-password")
-
-# TODO change to python ---- ruby script ------------------------------------
-# the response is a multiline string, with the status being on its own line
-# using the format "Status: <status here>"
-# Split each line into its own object in an array
-response_objects = ARGV[0].split("\n")
-
-# get line that contains the "Status:" text
-status_line = response_objects.select { |data| data.include?('Status:') }[0]
-
-# get text describing the status (should be either "in progress" or "success")
-current_status = "#{status_line.split('Status: ').last}"
-
-# respond with value
-puts current_status
-# -- end ruby script --------------------------------------------------------
-
-current_status=$(ruby status.rb "$statusResponse")
+ --username ${USER} \
+ --password ${OSXAPPPASS})
+current_status=$(python branding/scripts/osx-get-status.py $statusResponse)
done
+
if [[ "$current_status" == "success" ]]; then
# staple notarization here
- xcrun stapler staple "YourApp.dmg"
+ xcrun stapler staple build/installer/${APPNAME}-installer-${VERSION}.app
+ create-dmg deploy/${APPNAME}-${VERSION}.dmg build/installer/${APPNAME}-installer-${VERSION}.app
else
echo "Error! The status was $current_status. There were errors. Please check the LogFileURL for error descriptions"
exit 1