Skip to content

Commit 9805f38

Browse files
committed
feature: add emoji width measurement to macOS CI builds
- Added pre-build measurement step for macOS runners - Detects terminal type (Apple_Terminal or iTerm.app) - Attempts to measure actual emoji widths using script command for pseudo-terminal - Outputs measurements as artifacts for inspection and emoji-widths.json updates - Uses continue-on-error to not block builds if measurement fails - Measurements can be used to update plugin/emoji-widths.json with actual values
1 parent 603d6d5 commit 9805f38

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

.github/workflows/build-jlink-bundle.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,27 @@ jobs:
6969
java -version
7070
jlink --version
7171
72+
- name: Measure emoji widths (macOS only)
73+
if: runner.os == 'macOS'
74+
run: |
75+
set -euo pipefail
76+
TERMINAL=$(./plugin/scripts/measure-emoji-widths.sh --detect-only 2>/dev/null | grep "Terminal:" | sed 's/Terminal: //')
77+
echo "Detected terminal: $TERMINAL"
78+
echo "DETECTED_TERMINAL=$TERMINAL" >> $GITHUB_OUTPUT
79+
80+
# Attempt to measure widths using script command for pseudo-terminal
81+
echo "Attempting to measure emoji widths..."
82+
if script -q -e -c "./plugin/scripts/measure-emoji-widths.sh --json" /dev/null > emoji-widths-$TERMINAL.json 2>/dev/null; then
83+
echo "✓ Measurements captured for $TERMINAL"
84+
cat emoji-widths-$TERMINAL.json
85+
else
86+
echo "⚠ Could not measure widths (non-interactive terminal). Using hardcoded defaults for $TERMINAL."
87+
# Store terminal detection result for reference
88+
echo "{\"terminal\": \"$TERMINAL\", \"note\": \"measurement required interactive terminal, not available in CI\"}" > emoji-widths-$TERMINAL.json
89+
fi
90+
id: measure
91+
continue-on-error: true
92+
7293
- name: Build jlink bundle
7394
run: |
7495
set -euo pipefail
@@ -93,14 +114,21 @@ jobs:
93114
ls -lh "${BUNDLE_NAME}.tar.gz"
94115
sha256sum "${BUNDLE_NAME}.tar.gz" > "${BUNDLE_NAME}.tar.gz.sha256"
95116
96-
- name: Upload artifact
117+
- name: Upload bundle artifact
97118
uses: actions/upload-artifact@v4
98119
with:
99120
name: cat-${{ steps.version.outputs.version }}-${{ matrix.platform }}
100121
path: |
101122
cat-${{ steps.version.outputs.version }}-${{ matrix.platform }}.tar.gz
102123
cat-${{ steps.version.outputs.version }}-${{ matrix.platform }}.tar.gz.sha256
103124
125+
- name: Upload emoji width measurements (macOS only)
126+
if: runner.os == 'macOS' && hashFiles('emoji-widths-*.json') != ''
127+
uses: actions/upload-artifact@v4
128+
with:
129+
name: emoji-measurements-${{ matrix.platform }}
130+
path: emoji-widths-*.json
131+
104132
release:
105133
needs: build
106134
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)