Skip to content

Commit d5dc20f

Browse files
committed
refactor(ci): use flake to build SVGs
1 parent 9550b3c commit d5dc20f

File tree

3 files changed

+26
-77
lines changed

3 files changed

+26
-77
lines changed

.github/workflows/draw-keymaps.yml

+10-61
Original file line numberDiff line numberDiff line change
@@ -21,72 +21,21 @@ jobs:
2121
steps:
2222

2323
- name: Checkout
24-
uses: actions/checkout@v3
24+
uses: actions/checkout@v4
2525
with:
26-
fetch-depth: 1 # Set to 2 if amending, or 1 if creating a new commit
26+
# Set to 2 if amending, or 1 if creating a new commit
27+
fetch-depth: 1
2728
submodules: recursive
2829

29-
- name: Install python dependencies
30-
run: |
31-
pip install "git+https://github.com/caksoylar/keymap-drawer.git@${{ env.km_dr_version }}"
32-
pip install pyyaml
30+
- name: Install nix
31+
uses: cachix/install-nix-action@v25
32+
- name: Setup nix cache
33+
uses: DeterminateSystems/magic-nix-cache-action@main
3334

34-
# TODO get keyboads & configs dynamically
35-
- name: Parse keymap
36-
run: |
37-
# TODO set generic vars in one place globally
38-
CONFIG="${{ env.km_dr_config }}"
39-
40-
for KEYMAP in ${{ env.keymap_path }}; do
41-
KEYBOARD=$(basename -s .keymap "$KEYMAP")
42-
OUTPUT="${{ env.output_folder }}/${KEYBOARD}.yaml"
43-
44-
# TODO consider running through `parallel`?
45-
echo "Parsing keymap for $KEYBOARD"
46-
keymap -c "$CONFIG" parse -z "$KEYMAP" > "$OUTPUT"
47-
done
48-
49-
- name: Draw keymap for all layers
50-
run: |
51-
CONFIG="${{ env.km_dr_config }}"
52-
53-
# FIXME can glob false positeves, e.g. previous keymaps
54-
for KEYMAP in ${{ env.output_folder }}/*.yaml; do
55-
KEYBOARD=$(basename -s .yaml "$KEYMAP")
56-
OUTPUT="${{ env.output_folder }}/${KEYBOARD}.svg"
57-
58-
echo "Drawing all layers for $KEYBOARD"
59-
keymap -c "$CONFIG" draw "$KEYMAP" > "$OUTPUT"
60-
done
61-
62-
63-
- name: Draw seperate layer keymaps
64-
run: |
65-
# Ensure errors propagate when piping stdout
66-
set -o pipefail
67-
68-
export CONFIG="${{ env.km_dr_config }}"
69-
70-
# Function to draw the given layer's keymap
71-
draw() {
72-
KEYMAP="$1"
73-
LAYER="$2"
74-
KEYBOARD=$(basename -s .yaml "$KEYMAP")
75-
OUTPUT="${{ env.output_folder }}/${KEYBOARD}_${LAYER}.svg"
76-
77-
echo "Drawing $LAYER layer for $KEYBOARD"
78-
keymap -c "$CONFIG" draw "$KEYMAP" -s "$LAYER" > "$OUTPUT"
79-
}
80-
export -f draw # Ensure the draw function can be called by `parallel`'s subprocess
81-
82-
# FIXME can glob false positeves, e.g. previous keymaps
83-
for KEYMAP in ${{ env.output_folder }}/*.yaml; do
84-
# Run `draw()` for each layer in the keymap. Up to 4 layers at a time...
85-
echo "Drawing layers in parallel"
86-
python3 .github/workflows/layers.py "$KEYMAP" \
87-
| parallel --jobs 4 draw "$KEYMAP"
88-
done
35+
- name: Draw keymaps
36+
run: nix run . -- draw
8937

38+
# TODO print to $GITHUB_STEP_SUMMARY
9039
- name: Commit changes
9140
uses: stefanzweifel/git-auto-commit-action@v4
9241
with:

.github/workflows/layers.py

-16
This file was deleted.

drawer/default.nix

+16
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
}: let
66
in {
77
perSystem = {
8+
config,
89
pkgs,
910
system,
1011
...
1112
}: let
1213
inherit (inputs.poetry2nix.lib.mkPoetry2Nix {inherit pkgs;}) mkPoetryApplication;
14+
exe = lib.getExe config.packages.keymap-drawer;
1315
in {
1416
packages = {
1517
keymap-drawer = mkPoetryApplication {
@@ -21,4 +23,18 @@ in {
2123
};
2224
};
2325
};
26+
27+
devshells.default.commands = [
28+
{
29+
name = "draw";
30+
command = /*bash*/ ''
31+
set +e
32+
33+
echo "Running draw command"
34+
${exe} --help
35+
'';
36+
help = "Draw SVG images of the keymap";
37+
}
38+
];
39+
};
2440
}

0 commit comments

Comments
 (0)