← All repositories

listless

A simple list app for Apple platforms

git clone https://code.inqk.net/listless.git


commit a94d7b77613728bb9b4a77ef5c1c89434812abf6
parent 2b98cca2466f4b78e34f8d7535615809db558b45
Author: Michael Camilleri <[email protected]>
Date:   Tue, 31 Mar 2026 16:52:30 +0900

Update scripts to work without login keychain being unlocked

Diffstat

MScripts/publish-ios.sh | 4++--
MScripts/publish-macos.sh | 4++--
AScripts/secrets.sh.example | 10++++++++++
MScripts/test-macos-ui.sh | 33+++++++++++++++++++++++++++++++++

4 files changed, 47 insertions(+), 4 deletions(-)

diff --git a/Scripts/publish-ios.sh b/Scripts/publish-ios.sh

@@ -5,7 +5,7 @@ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
 SECRETS="$REPO_ROOT/.asc/secrets.sh"
 
 if [[ ! -f "$SECRETS" ]]; then
-    echo "Error: $SECRETS not found. See .asc/secrets.sh.example for the required format."
+    echo "Error: $SECRETS not found. See Scripts/secrets.sh.example for the required format."
     exit 1
 fi
 
@@ -16,7 +16,7 @@ ARCHIVE_PATH="/tmp/Listless-latest.xcarchive"
 EXPORT_PATH="/tmp/Listless-export"
 EXPORT_PLIST="/tmp/Listless-ExportOptions.plist"
 IPA_PATH="$EXPORT_PATH/Listless iOS.ipa"
-DEV_P12="$REPO_ROOT/.asc/ios-signing/dev.p12"
+DEV_P12="$REPO_ROOT/.asc/dev.p12"
 DIST_P12="$REPO_ROOT/.asc/ios-signing/dist-headless.p12"
 TMP_KEYCHAIN="$REPO_ROOT/.asc/build.keychain-db"
 

diff --git a/Scripts/publish-macos.sh b/Scripts/publish-macos.sh

@@ -5,7 +5,7 @@ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
 SECRETS="$REPO_ROOT/.asc/secrets.sh"
 
 if [[ ! -f "$SECRETS" ]]; then
-    echo "Error: $SECRETS not found. See .asc/secrets.sh.example for the required format."
+    echo "Error: $SECRETS not found. See Scripts/secrets.sh.example for the required format."
     exit 1
 fi
 
@@ -18,7 +18,7 @@ EXPORT_PATH="/tmp/Listless-mac-export"
 EXPORT_PLIST="/tmp/Listless-mac-ExportOptions.plist"
 PKG_PATH="$EXPORT_PATH/Listless.pkg"
 SIGNING_DIR="$REPO_ROOT/.asc/macos-signing"
-DEV_P12="$REPO_ROOT/.asc/ios-signing/dev.p12"
+DEV_P12="$REPO_ROOT/.asc/dev.p12"
 APP_P12="$SIGNING_DIR/app-headless.p12"
 INSTALLER_P12="$SIGNING_DIR/installer-headless.p12"
 TMP_KEYCHAIN="$REPO_ROOT/.asc/build.keychain-db"

diff --git a/Scripts/secrets.sh.example b/Scripts/secrets.sh.example

@@ -0,0 +1,10 @@
+#!/bin/bash
+# Secrets and signing configuration — kept out of version control.
+# Copy this file to .asc/secrets.sh and fill in the values.
+
+TEAM_ID="your-team-id"
+KEY_ID="your-api-key-id"
+ISSUER_ID="your-issuer-id"
+DEV_P12_PASS="your-dev-p12-password"
+DIST_P12_PASS="your-dist-p12-password"
+TMP_KEYCHAIN_PASS="your-tmp-keychain-password"

diff --git a/Scripts/test-macos-ui.sh b/Scripts/test-macos-ui.sh

@@ -1,6 +1,39 @@
 #!/bin/bash
 set -euo pipefail
 
+REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
+SECRETS="$REPO_ROOT/.asc/secrets.sh"
+
+if [[ ! -f "$SECRETS" ]]; then
+    echo "Error: $SECRETS not found. See Scripts/secrets.sh.example for the required format."
+    exit 1
+fi
+
+source "$SECRETS"
+
+DEV_P12="$REPO_ROOT/.asc/dev.p12"
+TMP_KEYCHAIN="$REPO_ROOT/.asc/build.keychain-db"
+
+echo "==> Setting up temporary keychain..."
+security delete-keychain "$TMP_KEYCHAIN" 2>/dev/null || true
+security create-keychain -p "$TMP_KEYCHAIN_PASS" "$TMP_KEYCHAIN"
+security unlock-keychain -p "$TMP_KEYCHAIN_PASS" "$TMP_KEYCHAIN"
+security set-keychain-settings -lut 21600 "$TMP_KEYCHAIN"
+security import "$DEV_P12" -k "$TMP_KEYCHAIN" -P "$DEV_P12_PASS" \
+    -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild
+security set-key-partition-list -S apple-tool:,apple:,codesign:,productbuild: \
+    -s -k "$TMP_KEYCHAIN_PASS" "$TMP_KEYCHAIN"
+security list-keychains -d user -s "$TMP_KEYCHAIN" ~/Library/Keychains/login.keychain-db
+
+cleanup_keychain() {
+    echo "==> Restoring keychain search list..."
+    security list-keychains -d user -s ~/Library/Keychains/login.keychain-db
+    security default-keychain -d user -s ~/Library/Keychains/login.keychain-db
+    security delete-keychain "$TMP_KEYCHAIN" 2>/dev/null || true
+}
+trap cleanup_keychain EXIT
+
+echo "==> Running macOS UI tests..."
 xcodebuild test \
   -scheme "Listless macOS" \
   -destination 'platform=macOS' \