summaryrefslogtreecommitdiff
path: root/hid/patch.py
blob: 4892d4b2808bfd1ed92aff396ec6c86abe9ba21b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# https://docs.platformio.org/en/latest/projectconf/advanced_scripting.html


from os.path import exists
from os.path import join
from os.path import basename

from typing import Dict

Import("env")


# =====
def _get_pkg_path(name: str) -> str:
    path = env.PioPlatform().get_package_dir(name)
    assert exists(path)
    return path


def _get_libs() -> Dict[str, str]:
    return {
        builder.name: builder.path
        for builder in env.GetLibBuilders()
    }


def _patch(path: str, patch_path: str) -> None:
    assert exists(path)
    flag_path: str = join(path, f".{basename(patch_path)}.done")
    if not exists(flag_path):
        env.Execute(f"patch -p1 -d {path} < {patch_path}")
        env.Execute(lambda *_, **__: open(flag_path, "w").close())


# =====
_patch(_get_pkg_path("framework-arduino-avr"), "patches/serial.patch")
_patch(_get_pkg_path("framework-arduino-avr"), "patches/get-plugged-endpoint.patch")

_libs = _get_libs()
if "HID-Project" in _libs:
    _patch(_libs["HID-Project"], "patches/absmouse.patch")