From 37c8112190fa1cb8e13e1ded47d0d9e761492ab0 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 07:31:45 -0700 Subject: [PATCH 01/10] Add CI, build plugin and run unit tests --- .github/workflows/ci.yml | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bab2f5f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +name: build + +on: + push: + pull_request: + +jobs: + build-qs: + runs-on: macos-latest + steps: + with: + QS_SOURCE_ROOT: /tmp/git/quicksilver + QS_DONT_TEST: 1 + CONFIGURATION: Debug + run: | + latest_tag=$( + git ls-remote --tags --refs --sort="-v:refname" https://github.com/quicksilver/quicksilver | + awk -F/ '{ print $NF; exit }' + ) + mkdir -p "${QS_SOURCE_ROOT}" + git clone --recurse-submodules --branch="${latest_tag}" --depth=1 https://github.com/quicksilver/Quicksilver.git "${QS_SOURCE_ROOT}" + + pushd "${QS_SOURCE_ROOT}" + ./Tools/qsrelease + popd + + template-plugin: + runs-on: macos-latest + needs: build-qs + steps: + - uses: actions/checkout@v4 + - run: | + set -x + python -m pip install --user cookiecutter + + pushd "$(mktemp -d)" + cookiecutter \ + --no-input \ + "${OLDPWD}" \ + plugin_name=MyPlugin \ + author="Nathan Henrie" \ + description="test plugin for CI" + + pushd QSMyNewPlugin + + xcodebuild -scheme QSMyPlugin build + xcodebuild -scheme QSMyPlugin test From f64e1fe3daf86625eac9b042cfa56bc4a263b19b Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 07:39:30 -0700 Subject: [PATCH 02/10] fix indentation --- .github/workflows/ci.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bab2f5f..384f37c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,12 +7,12 @@ on: jobs: build-qs: runs-on: macos-latest + env: + QS_SOURCE_ROOT: /tmp/git/quicksilver + QS_DONT_TEST: 1 + CONFIGURATION: Debug steps: - with: - QS_SOURCE_ROOT: /tmp/git/quicksilver - QS_DONT_TEST: 1 - CONFIGURATION: Debug - run: | + - run: | latest_tag=$( git ls-remote --tags --refs --sort="-v:refname" https://github.com/quicksilver/quicksilver | awk -F/ '{ print $NF; exit }' @@ -31,6 +31,9 @@ jobs: - uses: actions/checkout@v4 - run: | set -x + + pwd + python -m pip install --user cookiecutter pushd "$(mktemp -d)" From a1e898ae605803b1158e2e9ae989c9818f4dc3af Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 07:43:58 -0700 Subject: [PATCH 03/10] Fix path to qsrelease --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 384f37c..e575ab6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,8 @@ jobs: mkdir -p "${QS_SOURCE_ROOT}" git clone --recurse-submodules --branch="${latest_tag}" --depth=1 https://github.com/quicksilver/Quicksilver.git "${QS_SOURCE_ROOT}" - pushd "${QS_SOURCE_ROOT}" + pushd "${QS_SOURCE_ROOT}/Quicksilver" ./Tools/qsrelease - popd template-plugin: runs-on: macos-latest From c8cccf42c19583217a0873a2702768d4b76af3c9 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 08:07:45 -0700 Subject: [PATCH 04/10] Call cookiecutter as module --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e575ab6..1ccc55e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: python -m pip install --user cookiecutter pushd "$(mktemp -d)" - cookiecutter \ + python -m cookiecutter \ --no-input \ "${OLDPWD}" \ plugin_name=MyPlugin \ From 160a6ed8a50f72a68f5548baaffb3b7a83aa895f Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 08:12:23 -0700 Subject: [PATCH 05/10] fix name --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ccc55e..34537bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,11 +39,11 @@ jobs: python -m cookiecutter \ --no-input \ "${OLDPWD}" \ - plugin_name=MyPlugin \ + plugin_name=QSMyPlugin \ author="Nathan Henrie" \ description="test plugin for CI" - pushd QSMyNewPlugin + pushd QSMyPlugin xcodebuild -scheme QSMyPlugin build xcodebuild -scheme QSMyPlugin test From aaf48c30dfcd3e68cacc0db24d9df25543a434ae Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 08:47:47 -0700 Subject: [PATCH 06/10] Release -> Debug --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34537bd..6efbb8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: git clone --recurse-submodules --branch="${latest_tag}" --depth=1 https://github.com/quicksilver/Quicksilver.git "${QS_SOURCE_ROOT}" pushd "${QS_SOURCE_ROOT}/Quicksilver" - ./Tools/qsrelease + ./Tools/qsrelease Debug template-plugin: runs-on: macos-latest From db780104b87b12ba2a0c427b6dac3f7d4a6528dc Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 09:02:45 -0700 Subject: [PATCH 07/10] debug --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6efbb8d..4a66cbf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,5 +45,7 @@ jobs: pushd QSMyPlugin + ls -l /private/tmp/QS/Configuration/Debug.xcconfig + xcodebuild -scheme QSMyPlugin build xcodebuild -scheme QSMyPlugin test From 635f1fcdc9ed8d2300e00bc454669a34d8a505d5 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 09:22:44 -0700 Subject: [PATCH 08/10] more debug --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a66cbf..9e589fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,7 @@ jobs: pushd QSMyPlugin ls -l /private/tmp/QS/Configuration/Debug.xcconfig + ls -l /tmp/QS/Configuration/Debug.xcconfig xcodebuild -scheme QSMyPlugin build xcodebuild -scheme QSMyPlugin test From cc293c35dddd76800d159e312be7e42d54dcd4a1 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 09:30:22 -0700 Subject: [PATCH 09/10] Reverse order --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e589fa..30b81c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,8 +45,8 @@ jobs: pushd QSMyPlugin - ls -l /private/tmp/QS/Configuration/Debug.xcconfig ls -l /tmp/QS/Configuration/Debug.xcconfig + ls -l /private/tmp/QS/Configuration/Debug.xcconfig xcodebuild -scheme QSMyPlugin build xcodebuild -scheme QSMyPlugin test From 8db32ebe94029de8747d9b30e77f8a5fab767332 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Sat, 14 Feb 2026 10:08:47 -0700 Subject: [PATCH 10/10] Combine steps to avoid hassle of caching vs uploading artifacts --- .github/workflows/ci.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30b81c9..27f7c0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: pull_request: jobs: - build-qs: + test-template: runs-on: macos-latest env: QS_SOURCE_ROOT: /tmp/git/quicksilver @@ -21,18 +21,11 @@ jobs: git clone --recurse-submodules --branch="${latest_tag}" --depth=1 https://github.com/quicksilver/Quicksilver.git "${QS_SOURCE_ROOT}" pushd "${QS_SOURCE_ROOT}/Quicksilver" - ./Tools/qsrelease Debug - - template-plugin: - runs-on: macos-latest - needs: build-qs - steps: + ./Tools/qsrelease "${CONFIGURATION}" - uses: actions/checkout@v4 - run: | set -x - pwd - python -m pip install --user cookiecutter pushd "$(mktemp -d)"