ci: run jpm bootstrap from inside the jpm checkout

bootstrap.janet resolves jpm/cli.janet relative to cwd, so it must run
from /tmp/jpm rather than the repo root (fixes 'could not find file
jpm/cli.janet').
This commit is contained in:
Yogthos 2026-06-05 18:30:27 -04:00
parent 1da6fce1ab
commit 5e69f71947
5 changed files with 180 additions and 1 deletions

View file

@ -35,7 +35,10 @@ jobs:
- name: Install jpm
run: |
git clone --depth 1 https://github.com/janet-lang/jpm.git /tmp/jpm
sudo janet /tmp/jpm/bootstrap.janet
# bootstrap.janet resolves jpm/cli.janet relative to the cwd, so it
# must run from inside the jpm checkout.
cd /tmp/jpm
sudo janet bootstrap.janet
- name: Janet version
run: janet -v

68
img/jolt-alt.svg Normal file
View file

@ -0,0 +1,68 @@
<svg viewBox="0 0 600 600" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" style="max-width: 450px;">
<defs>
<!-- High-energy tri-color gradient -->
<linearGradient id="joltEnergy" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#FFDD00" />
<stop offset="50%" stop-color="#FF5500" />
<stop offset="100%" stop-color="#FF0055" />
</linearGradient>
<!-- Gradient for the subtle top inner highlight -->
<linearGradient id="boxHighlight" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stop-color="rgba(255,255,255,0.15)" />
<stop offset="10%" stop-color="rgba(255,255,255,0)" />
</linearGradient>
<!-- Subtle neon glow filter for the bolt -->
<filter id="neonGlow" x="-30%" y="-30%" width="160%" height="160%">
<feGaussianBlur stdDeviation="16" result="blur" />
<feComponentTransfer in="blur" result="glow">
<feFuncA type="linear" slope="0.4" />
</feComponentTransfer>
<feMerge>
<feMergeNode in="glow" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<!-- Native SVG drop shadow to replace the CSS box-shadow -->
<filter id="boxShadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="20" stdDeviation="25" flood-color="#000000" flood-opacity="0.5" />
</filter>
</defs>
<!-- Base rounded box with the dark background and outer drop shadow -->
<rect x="44" y="44" width="512" height="512" rx="64" fill="#161b22" filter="url(#boxShadow)" />
<!-- Overlapping rect stroke to simulate the crisp CSS inset highlight -->
<rect x="45" y="45" width="510" height="510" rx="63" fill="none" stroke="url(#boxHighlight)" stroke-width="2" />
<!-- Translated group shifted by 44px to account for the new padded viewBox -->
<g transform="translate(109, 24)" filter="url(#neonGlow)">
<!-- Main J-Bolt Shape -->
<path d="
M 140 100
L 360 100
L 260 250
L 340 250
L 180 450
L 220 310
L 140 310
L 220 180
L 140 180
Z"
fill="url(#joltEnergy)"
/>
<!-- Trailing speed fragment 1 (Top) -->
<path d="M 70 100 L 120 100 L 95 140 L 45 140 Z" fill="url(#joltEnergy)" opacity="0.9" />
<!-- Trailing speed fragment 2 (Middle) -->
<path d="M 50 180 L 100 180 L 75 220 L 25 220 Z" fill="url(#joltEnergy)" opacity="0.75" />
<!-- Trailing speed fragment 3 (Bottom) -->
<path d="M 80 260 L 110 260 L 85 300 L 55 300 Z" fill="url(#joltEnergy)" opacity="0.6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3 KiB

BIN
img/jolt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

54
img/jolt.svg Normal file
View file

@ -0,0 +1,54 @@
<svg viewBox="0 0 512 512" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- High-energy tri-color gradient -->
<linearGradient id="joltEnergy" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#FFDD00" />
<stop offset="50%" stop-color="#FF5500" />
<stop offset="100%" stop-color="#FF0055" />
</linearGradient>
<!-- Subtle neon glow filter -->
<filter id="neonGlow" x="-30%" y="-30%" width="160%" height="160%">
<feGaussianBlur stdDeviation="16" result="blur" />
<feComponentTransfer in="blur" result="glow">
<feFuncA type="linear" slope="0.4" />
</feComponentTransfer>
<feMerge>
<feMergeNode in="glow" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
</defs>
<!-- Translate group to perfectly center the asymmetric shape in the canvas -->
<g transform="translate(65, -20)" filter="url(#neonGlow)">
<!--
Main J-Bolt Shape
Plotted to combine the heavy top bar of a 'J' with the offset jagged cuts of a lightning strike
-->
<path d="
M 140 100
L 360 100
L 260 250
L 340 250
L 180 450
L 220 310
L 140 310
L 220 180
L 140 180
Z"
fill="url(#joltEnergy)"
/>
<!-- Trailing speed fragment 1 (Top) -->
<path d="M 70 100 L 120 100 L 95 140 L 45 140 Z" fill="url(#joltEnergy)" opacity="0.9" />
<!-- Trailing speed fragment 2 (Middle) -->
<path d="M 50 180 L 100 180 L 75 220 L 25 220 Z" fill="url(#joltEnergy)" opacity="0.75" />
<!-- Trailing speed fragment 3 (Bottom) -->
<path d="M 80 260 L 110 260 L 85 300 L 55 300 Z" fill="url(#joltEnergy)" opacity="0.6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

54
jolt.svg Normal file
View file

@ -0,0 +1,54 @@
<svg viewBox="0 0 512 512" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
<defs>
<!-- High-energy tri-color gradient -->
<linearGradient id="joltEnergy" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#FFDD00" />
<stop offset="50%" stop-color="#FF5500" />
<stop offset="100%" stop-color="#FF0055" />
</linearGradient>
<!-- Subtle neon glow filter -->
<filter id="neonGlow" x="-30%" y="-30%" width="160%" height="160%">
<feGaussianBlur stdDeviation="16" result="blur" />
<feComponentTransfer in="blur" result="glow">
<feFuncA type="linear" slope="0.4" />
</feComponentTransfer>
<feMerge>
<feMergeNode in="glow" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
</defs>
<!-- Translate group to perfectly center the asymmetric shape in the canvas -->
<g transform="translate(65, -20)" filter="url(#neonGlow)">
<!--
Main J-Bolt Shape
Plotted to combine the heavy top bar of a 'J' with the offset jagged cuts of a lightning strike
-->
<path d="
M 140 100
L 360 100
L 260 250
L 340 250
L 180 450
L 220 310
L 140 310
L 220 180
L 140 180
Z"
fill="url(#joltEnergy)"
/>
<!-- Trailing speed fragment 1 (Top) -->
<path d="M 70 100 L 120 100 L 95 140 L 45 140 Z" fill="url(#joltEnergy)" opacity="0.9" />
<!-- Trailing speed fragment 2 (Middle) -->
<path d="M 50 180 L 100 180 L 75 220 L 25 220 Z" fill="url(#joltEnergy)" opacity="0.75" />
<!-- Trailing speed fragment 3 (Bottom) -->
<path d="M 80 260 L 110 260 L 85 300 L 55 300 Z" fill="url(#joltEnergy)" opacity="0.6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB