aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-09-04 16:23:20 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-09-04 16:23:20 +0200
commite4055a06b396c98ee386d16cf2dd26b5d2ec603a (patch)
tree4f1b444da2ae871030d797cb7ec6fad526f8c32a
parent0b61369240ad0a68322146796721055aca07428a (diff)
Improve build processHEADmain
-rw-r--r--Info.plist2
-rw-r--r--Makefile28
-rw-r--r--builds/Flat Bezel.qsplugin-1.1.0.zipbin0 -> 50563 bytes
-rwxr-xr-xscripts/build.sh15
-rwxr-xr-xscripts/notarize.sh18
-rwxr-xr-xscripts/package.sh23
-rwxr-xr-xscripts/sign.sh26
-rwxr-xr-xscripts/upload.sh22
8 files changed, 120 insertions, 14 deletions
diff --git a/Info.plist b/Info.plist
index 737fc36..6c9ede0 100644
--- a/Info.plist
+++ b/Info.plist
@@ -19,7 +19,7 @@
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
- <string>19</string>
+ <string>1B</string>
<key>QSPlugIn</key>
<dict>
<key>author</key>
diff --git a/Makefile b/Makefile
index eb7c360..b4c5426 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,31 @@
+project_name := Flat Bezel.qsplugin
+build_directory := builds
configuration = Debug
-quicksilver_path = "../../vendor/Quicksilver/Quicksilver/"
+quicksilver_directory = "../../vendor/Quicksilver/Quicksilver/"
+quicksilver_build_directory = "/tmp/QS/build"
+deploy_host := deploy@conchos.bdr.sh
+deploy_path := /srv/http/build.r.bdr.sh/FlatBezel.qsplugin
+
+distribute: build package notarize repackage sign_distributable upload
default: build
build:
- configuration=$(configuration) quicksilver_path=$(quicksilver_path) ./scripts/build.sh
+ configuration=$(configuration) quicksilver_directory=$(quicksilver_directory) ./scripts/build.sh
+
+package:
+ @scripts/package.sh "$(project_name)" "$(build_directory)" "$(quicksilver_build_directory)/$(configuration)"
+
+repackage:
+ @scripts/package.sh "$(project_name)" "$(build_directory)" "$(quicksilver_build_directory)/$(configuration)"
+
+notarize:
+ @scripts/notarize.sh "$(project_name)" "$(build_directory)" "$(quicksilver_build_directory)/$(configuration)"
+
+sign_distributable:
+ @scripts/sign.sh "$(project_name)" "$(build_directory)" "$(quicksilver_build_directory)/$(configuration)"
+
+upload:
+ @scripts/upload.sh "$(project_name)" "$(build_directory)" "$(quicksilver_build_directory)/$(configuration)" "$(deploy_host):$(deploy_path)"
+
+.PHONY: build package repackage notarize distribute sign_distributable
diff --git a/builds/Flat Bezel.qsplugin-1.1.0.zip b/builds/Flat Bezel.qsplugin-1.1.0.zip
new file mode 100644
index 0000000..e224681
--- /dev/null
+++ b/builds/Flat Bezel.qsplugin-1.1.0.zip
Binary files differ
diff --git a/scripts/build.sh b/scripts/build.sh
index 1ae8203..dd48ea3 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -3,8 +3,8 @@
set -e
echo "Starting build with configuration ${configuration}" > /dev/stderr
-echo "Quicksilver path is: ${quicksilver_path}" > /dev/stderr
-pushd "${quicksilver_path}"
+echo "Quicksilver directory is: ${quicksilver_directory}" > /dev/stderr
+pushd "${quicksilver_directory}"
echo "Starting build at `pwd`" > /dev/stderr
xcodebuild \
-quiet \
@@ -22,14 +22,7 @@ xcodebuild \
build
echo "Build complete, signing." > /dev/stderr
-output_path="/tmp/QS/build/Release/Quicksilver.app/Contents/PlugIns/"
+output_directory="/tmp/QS/build/Release/Quicksilver.app/Contents/PlugIns/"
plugin_name="Flat Bezel.qsplugin"
-codesign --force -vvv --deep --sign ${SIGNING_IDENTITY} "${output_path}${plugin_name}"
-
-echo "Signing complete, archiving." > /dev/stderr
-archive_name="Flat_Bezel.qsplugin.tar.gz"
-pushd "${output_path}"
-tar -czvf "${archive_name}" "${plugin_name}"
-popd
-mv "${output_path}${archive_name}" .
+codesign --force -vvv --deep --sign ${SIGNING_IDENTITY} "${output_directory}${plugin_name}"
echo "Done." > /dev/stderr
diff --git a/scripts/notarize.sh b/scripts/notarize.sh
new file mode 100755
index 0000000..410c851
--- /dev/null
+++ b/scripts/notarize.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+set -e
+
+if [ "$#" -ne 3 ]; then
+ echo "Usage: $0 <project_name> <build_directory> <quicksilver_directory>"
+ exit 1
+fi
+
+project_name="$1"
+build_directory="$2"
+quicksilver_directory="$3"
+
+plugin_path="${quicksilver_directory}/Quicksilver.app/Contents/Plugins/${project_name}"
+plugin_version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plugin_path}/Contents/Info.plist")
+zip_path="${build_directory}/${project_name}-${plugin_version}.zip"
+xcrun notarytool submit "${zip_path}" --wait --verbose --keychain-profile "Apps @ Unlimited Pizza"
+stapler staple "${plugin_path}"
diff --git a/scripts/package.sh b/scripts/package.sh
new file mode 100755
index 0000000..a8a1eb1
--- /dev/null
+++ b/scripts/package.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+set -e
+
+if [ "$#" -ne 3 ]; then
+ echo "Usage: $0 <project_name> <build_directory> <quicksilver_directory>"
+ exit 1
+fi
+
+project_name="$1"
+build_directory="$2"
+quicksilver_directory="$3"
+
+plugin_path="${quicksilver_directory}/Quicksilver.app/Contents/Plugins/${project_name}"
+plugin_version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plugin_path}/Contents/Info.plist")
+tmp_dir=$(mktemp -d)
+zip_name="${project_name}-${plugin_version}.zip"
+cp -R "${plugin_path}" "${tmp_dir}"
+pushd "${tmp_dir}"
+zip -r "${zip_name}" .
+popd
+cp "${tmp_dir}/${zip_name}" "${build_directory}"
+rm -rf "${tmp_dir}"
diff --git a/scripts/sign.sh b/scripts/sign.sh
new file mode 100755
index 0000000..73e00f5
--- /dev/null
+++ b/scripts/sign.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+set -e
+
+if [ "$#" -ne 3 ]; then
+ echo "Usage: $0 <project_name> <build_directory> <quicksilver_directory>"
+ exit 1
+fi
+
+project_name="$1"
+build_directory="$2"
+quicksilver_directory="$3"
+
+plugin_path="${quicksilver_directory}/Quicksilver.app/Contents/Plugins/${project_name}"
+plugin_version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plugin_path}/Contents/Info.plist")
+build_number=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plugin_path}/Contents/Info.plist")
+zip_path="${build_directory}/${project_name}-${plugin_version}.zip"
+
+base_zip_name=$(basename "${zip_path}")
+COMMENT="Version: ${plugin_version}, File: ${base_zip_name} Built on: $(date +'%Y-%m-%d %H:%M')"
+
+if [ -f ~/.minisign/minisign.pass ]; then
+ cat ~/.minisign/minisign.pass | minisign -Sm "${zip_path}" -t "${COMMENT}"
+else
+ minisign -Sm "${zip_path}" -t "${COMMENT}"
+fi
diff --git a/scripts/upload.sh b/scripts/upload.sh
new file mode 100755
index 0000000..a2881c5
--- /dev/null
+++ b/scripts/upload.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+set -e
+
+
+if [ "$#" -ne 4 ]; then
+ echo "Usage: $0 <project_name> <build_directory> <quicksilver_directory> <upload_location>"
+ exit 1
+fi
+
+project_name="$1"
+build_directory="$2"
+quicksilver_directory="$3"
+upload_location="$4"
+
+plugin_path="${quicksilver_directory}/Quicksilver.app/Contents/Plugins/${project_name}"
+plugin_version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plugin_path}/Contents/Info.plist")
+zip_path="${build_directory}/${project_name}-${plugin_version}.zip"
+
+echo "Uploading ${zip_path} to ${upload_location}"
+rsync -avz "${zip_path}" "${upload_location}"
+rsync -avz "${zip_path}".minisig "${upload_location}"