@@ -21,72 +21,21 @@ jobs:
21
21
steps :
22
22
23
23
- name : Checkout
24
- uses : actions/checkout@v3
24
+ uses : actions/checkout@v4
25
25
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
27
28
submodules : recursive
28
29
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
33
34
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
89
37
38
+ # TODO print to $GITHUB_STEP_SUMMARY
90
39
- name : Commit changes
91
40
uses : stefanzweifel/git-auto-commit-action@v4
92
41
with :
0 commit comments