Skip to content

Commit 0073775

Browse files
committed
Refresh dual Navigator test build from latest Oryx
1 parent d5f950a commit 0073775

1 file changed

Lines changed: 117 additions & 22 deletions

File tree

.github/workflows/build-dual-navigator-test.yml

Lines changed: 117 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ on:
66
branches:
77
- test/dual-navigator
88
paths:
9-
- emVdK/config.h
10-
- emVdK/keymap.json
11-
- emVdK/rules.mk
129
- scripts/patch-voyager-dual-hid.py
1310
- .github/workflows/build-dual-navigator-test.yml
1411

1512
permissions:
16-
contents: read
13+
contents: write
14+
15+
env:
16+
LAYOUT_ID: emVdK
17+
LAYOUT_GEOMETRY: voyager
18+
QMK_OPENRGB_REF: module_revD
1719

1820
jobs:
1921
build-dual-navigator:
@@ -24,13 +26,107 @@ jobs:
2426
uses: actions/checkout@v5
2527
with:
2628
ref: test/dual-navigator
27-
fetch-depth: 1
29+
fetch-depth: 0
30+
31+
- name: Download latest Oryx layout source
32+
id: oryx
33+
run: |
34+
response=$(curl --fail --silent --show-error --location 'https://oryx.zsa.io/graphql' \
35+
--header 'Content-Type: application/json' \
36+
--data '{"query":"query getLayout($hashId: String!, $revisionId: String!, $geometry: String) {layout(hashId: $hashId, geometry: $geometry, revisionId: $revisionId) { revision { hashId, qmkVersion, title }}}","variables":{"hashId":"'"${LAYOUT_ID}"'","geometry":"'"${LAYOUT_GEOMETRY}"'","revisionId":"latest"}}')
37+
38+
hash_id=$(echo "$response" | jq -r '.data.layout.revision.hashId')
39+
firmware_version=$(printf '%.0f' "$(echo "$response" | jq -r '.data.layout.revision.qmkVersion')")
40+
title=$(echo "$response" | jq -r '.data.layout.revision.title')
41+
42+
test -n "$hash_id"
43+
test "$hash_id" != "null"
44+
test -n "$firmware_version"
45+
46+
echo "Oryx revision: $hash_id"
47+
echo "Oryx QMK firmware: firmware${firmware_version}"
48+
echo "Oryx title: $title"
49+
50+
curl --fail --silent --show-error --location \
51+
"https://oryx.zsa.io/source/${hash_id}" \
52+
-o source.zip
53+
54+
rm -rf "${LAYOUT_ID}"
55+
mkdir -p "${LAYOUT_ID}"
56+
unzip -oj source.zip '*_source/*' -d "${LAYOUT_ID}"
57+
rm source.zip
58+
59+
echo "hash_id=${hash_id}" >> "$GITHUB_OUTPUT"
60+
echo "firmware_version=${firmware_version}" >> "$GITHUB_OUTPUT"
2861
29-
- name: Initialize ZSA QMK firmware25
62+
- name: Add dual Navigator and OpenRGB test configuration
63+
run: |
64+
python3 - <<'PY'
65+
import json
66+
import re
67+
from pathlib import Path
68+
69+
layout = Path("emVdK")
70+
71+
keymap_json = layout / "keymap.json"
72+
data = json.loads(keymap_json.read_text())
73+
modules = data.setdefault("modules", [])
74+
for module in (
75+
"zsa/oryx",
76+
"zsa/navigator_trackball",
77+
"zsa/navigator_trackpad",
78+
"zsa/automouse",
79+
"zsa/defaults",
80+
"openrgb",
81+
):
82+
if module not in modules:
83+
modules.append(module)
84+
keymap_json.write_text(json.dumps(data, indent=4) + "\n")
85+
86+
config = layout / "config.h"
87+
text = config.read_text()
88+
for name, value in (
89+
("NAVIGATOR_TRACKBALL_ROTATION", "325"),
90+
("NAVIGATOR_TRACKPAD_ROTATION", "0"),
91+
):
92+
pattern = rf"^#define\s+{name}\s+.*$"
93+
replacement = f"#define {name} {value}"
94+
if re.search(pattern, text, flags=re.MULTILINE):
95+
text = re.sub(pattern, replacement, text, flags=re.MULTILINE)
96+
else:
97+
text += f"\n{replacement}\n"
98+
config.write_text(text)
99+
100+
rules = layout / "rules.mk"
101+
text = rules.read_text()
102+
pattern = r"^MOUSE_SHARED_EP\s*=.*$"
103+
if re.search(pattern, text, flags=re.MULTILINE):
104+
text = re.sub(pattern, "MOUSE_SHARED_EP = yes", text, flags=re.MULTILINE)
105+
else:
106+
if text and not text.endswith("\n"):
107+
text += "\n"
108+
text += "MOUSE_SHARED_EP = yes\n"
109+
rules.write_text(text)
110+
PY
111+
112+
- name: Save refreshed test source on branch
113+
run: |
114+
git config --local user.name "github-actions"
115+
git config --local user.email "github-actions@github.com"
116+
git add "${LAYOUT_ID}"
117+
if ! git diff --cached --quiet; then
118+
git commit -m "Refresh dual Navigator test source from Oryx"
119+
git push origin HEAD:test/dual-navigator
120+
else
121+
echo "Oryx source unchanged"
122+
fi
123+
124+
- name: Initialize matching ZSA QMK firmware
30125
run: |
31126
git submodule update --init --remote --depth=1 --no-single-branch
32127
cd qmk_firmware
33-
git checkout -B firmware25 origin/firmware25
128+
git checkout -B "firmware${{ steps.oryx.outputs.firmware_version }}" \
129+
"origin/firmware${{ steps.oryx.outputs.firmware_version }}"
34130
git submodule update --init --recursive
35131
cd ..
36132
@@ -39,7 +135,7 @@ jobs:
39135
rm -rf qmk_firmware/modules/openrgb
40136
git clone \
41137
--depth 1 \
42-
--branch module_revD \
138+
--branch "${QMK_OPENRGB_REF}" \
43139
https://gitlab.com/OpenRGBDevelopers/QMK-OpenRGB.git \
44140
qmk_firmware/modules/openrgb
45141
echo "QMK-OpenRGB commit: $(git -C qmk_firmware/modules/openrgb rev-parse HEAD)"
@@ -50,14 +146,13 @@ jobs:
50146
51147
- name: Validate test configuration
52148
run: |
53-
grep -q '"zsa/navigator_trackball"' emVdK/keymap.json
54-
grep -q '"zsa/navigator_trackpad"' emVdK/keymap.json
55-
grep -q '"openrgb"' emVdK/keymap.json
56-
grep -q 'NAVIGATOR_TRACKBALL_ROTATION 325' emVdK/config.h
57-
grep -q 'NAVIGATOR_TRACKPAD_ROTATION 0' emVdK/config.h
58-
grep -q '^MOUSE_SHARED_EP = yes$' emVdK/rules.mk
59-
60-
# OpenRGB remains on stock QMK Raw HID; Oryx remains on the second HID.
149+
grep -q '"zsa/navigator_trackball"' "${LAYOUT_ID}/keymap.json"
150+
grep -q '"zsa/navigator_trackpad"' "${LAYOUT_ID}/keymap.json"
151+
grep -q '"openrgb"' "${LAYOUT_ID}/keymap.json"
152+
grep -q 'NAVIGATOR_TRACKBALL_ROTATION 325' "${LAYOUT_ID}/config.h"
153+
grep -q 'NAVIGATOR_TRACKPAD_ROTATION 0' "${LAYOUT_ID}/config.h"
154+
grep -q '^MOUSE_SHARED_EP = yes$' "${LAYOUT_ID}/rules.mk"
155+
61156
grep -q 'void raw_hid_receive(uint8_t \*data, uint8_t length)' \
62157
qmk_firmware/modules/openrgb/openrgb.c
63158
grep -q 'void oryx_hid_receive(uint8_t \*data, uint8_t length)' \
@@ -68,20 +163,20 @@ jobs:
68163

69164
- name: Install layout into QMK tree
70165
run: |
71-
rm -rf qmk_firmware/keyboards/zsa/voyager/keymaps/emVdK
166+
rm -rf "qmk_firmware/keyboards/zsa/voyager/keymaps/${LAYOUT_ID}"
72167
mkdir -p qmk_firmware/keyboards/zsa/voyager/keymaps
73-
cp -r emVdK qmk_firmware/keyboards/zsa/voyager/keymaps/
168+
cp -r "${LAYOUT_ID}" qmk_firmware/keyboards/zsa/voyager/keymaps/
74169
75170
- name: Build Voyager firmware
76171
run: |
77172
docker run \
78173
-v ./qmk_firmware:/root \
79174
--rm \
80175
qmk \
81-
/bin/sh -c '
82-
qmk setup zsa/qmk_firmware -b firmware25 -y
83-
make zsa/voyager:emVdK
84-
'
176+
/bin/sh -c "
177+
qmk setup zsa/qmk_firmware -b firmware${{ steps.oryx.outputs.firmware_version }} -y
178+
make zsa/voyager:${LAYOUT_ID}
179+
"
85180
86181
- name: Show built firmware
87182
run: |

0 commit comments

Comments
 (0)