4
4
push : # automatically run on changes to following paths
5
5
paths :
6
6
- " **.lock"
7
+ - " drawer/**"
7
8
- " config/**"
8
- env :
9
- km_dr_version : main
10
- km_dr_config : config/keymap_drawer.yaml
11
- keymap_path : config/*.keymap
12
- output_folder : img
13
9
14
10
jobs :
15
11
draw :
@@ -21,72 +17,21 @@ jobs:
21
17
steps :
22
18
23
19
- name : Checkout
24
- uses : actions/checkout@v3
20
+ uses : actions/checkout@v4
25
21
with :
26
- fetch-depth : 1 # Set to 2 if amending, or 1 if creating a new commit
22
+ # Set to 2 if amending, or 1 if creating a new commit
23
+ fetch-depth : 1
27
24
submodules : recursive
28
25
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
26
+ - name : Install nix
27
+ uses : cachix/install-nix-action@v25
28
+ - name : Setup nix cache
29
+ uses : DeterminateSystems/magic-nix-cache-action@main
33
30
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
31
+ - name : Draw keymaps
32
+ run : nix run . -- draw
89
33
34
+ # TODO print to $GITHUB_STEP_SUMMARY
90
35
- name : Commit changes
91
36
uses : stefanzweifel/git-auto-commit-action@v4
92
37
with :
0 commit comments