<reponame>melkati/Manually-Calibrate-Sensirion-SCD30
# From: https://github.com/letscontrolit/ESPEasy/blob/f268d21763bf32eb1d2ed35aa68266b3eec2afe9/tools/ci/generate-matrix.py
#
# ref. https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/
#
# This script is expected to print out something like this to supply the next Actions step with environments to build in parallel:
# ::set-output name=matrix::{"include": [{"chip": "esp8266", "env": "custom_ESP8266_4M1M"}, {"chip": "esp32", "env": "custom_ESP32_4M316k"}]}
#
# These are the same environment names as with tools/build_ESPeasy.sh (i.e. all of them)

import json
from platformio.project.config import ProjectConfig


def get_jobs(cfg):
    for env in cfg.envs():
        platform = cfg.get("env:{}".format(env), "platform")
        if "espressif8266" in platform:
            yield {"chip": "esp8266", "env": env}
        elif "espressif32" in platform:
            yield {"chip": "esp32", "env": env}
        else:
            raise ValueError(
                "Unknown `platform = {}` for `[env:{}]`".format(platform, env)
            )


def filter_jobs(jobs, ignore=("spec_",)):
    for job in jobs:
        if job["env"].startswith(ignore):
            continue

        yield job


if __name__ == "__main__":
    jobs = list(filter_jobs(get_jobs(ProjectConfig.get_instance())))

    sort = []
    for job in jobs:
        if job["chip"] == "esp8266":
            sort.append(job["env"])
        sort.sort(key=str.casefold)

    serialized = json.dumps({"include": jobs})
    print("::set-output name=matrix::{}".format(serialized))
    

# From: https://github.com/letscontrolit/ESPEasy/blob/f268d21763bf32eb1d2ed35aa68266b3eec2afe9/tools/ci/generate-matrix.py
#
# ref. https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/
#
# This script is expected to print out something like this to supply the next Actions step with environments to build in parallel:
# ::set-output name=matrix::{"include": [{"chip": "esp8266", "env": "custom_ESP8266_4M1M"}, {"chip": "esp32", "env": "custom_ESP32_4M316k"}]}
#
# These are the same environment names as with tools/build_ESPeasy.sh (i.e. all of them)

import json
from platformio.project.config import ProjectConfig


def get_jobs(cfg):
    for env in cfg.envs():
        platform = cfg.get("env:{}".format(env), "platform")
        if "espressif8266" in platform:
            yield {"chip": "esp8266", "env": env}
        elif "espressif32" in platform:
            yield {"chip": "esp32", "env": env}
        else:
            raise ValueError(
                "Unknown `platform = {}` for `[env:{}]`".format(platform, env)
            )


def filter_jobs(jobs, ignore=("spec_",)):
    for job in jobs:
        if job["env"].startswith(ignore):
            continue

        yield job


if __name__ == "__main__":
    jobs = list(filter_jobs(get_jobs(ProjectConfig.get_instance())))

    sort = []
    for job in jobs:
        if job["chip"] == "esp8266":
            sort.append(job["env"])
        sort.sort(key=str.casefold)

    serialized = json.dumps({"include": jobs})
    print("::set-output name=matrix::{}".format(serialized))
# From: https://github.com/letscontrolit/ESPEasy/blob/f268d21763bf32eb1d2ed35aa68266b3eec2afe9/tools/ci/generate-matrix.py # # ref. https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ # # This script is expected to print out something like this to supply the next Actions step with environments to build in parallel: # ::set-output name=matrix::{"include": [{"chip": "esp8266", "env": "custom_ESP8266_4M1M"}, {"chip": "esp32", "env": "custom_ESP32_4M316k"}]} # # These are the same environment names as with tools/build_ESPeasy.sh (i.e. all of them)