arduino-esp32/tools/gen_insights_package.py
Lucas Saavedra Vaz da5c6ab9ae
Refactor repository with pre-commit hooks (#9515)
* Add Config

* Add Cache and remove pre-commit action

* [pre-commit.ci lite] apply automatic fixes

* Remove freeze

* Fix

* Update action

* Use latest stable Python 3 version

* Improve caching

* Improve cache tag

* Improve bot message

* fix(typos): Fix typos

* fix(typos): Fix more typos

* refactor(udp_server): Convert script from Python 2 to 3

* Fix whitespace

* Clang-format fixes

* Prettier fixes

* Black formatting

* Manual fixes

* Line endings

* Fix flake and make Vale manual

* Fix flake and reformat

---------

Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
2024-04-15 19:40:56 +03:00

54 lines
2.2 KiB
Python

import os
import sys
import shutil
import json
APP_HEADER_SIZE = 32
VERSION_NAME_OFFSET = APP_HEADER_SIZE + 16
VERSION_NAME_SIZE = 32
PROJECT_NAME_OFFSET = VERSION_NAME_OFFSET + VERSION_NAME_SIZE
PROJECT_NAME_SIZE = 32
# Input path of temporary build directory created by Arduino
BUILD_DIR = sys.argv[1]
# Input project name
PROJ_NAME = sys.argv[2]
# Input path to create output package
TARGET_PATH = sys.argv[3]
def main():
print("Creating ESP Insights Firmware Package.")
archive_path = os.path.join(BUILD_DIR, PROJ_NAME)
out_path = os.path.join(TARGET_PATH, PROJ_NAME)
# Create target archive directories
os.makedirs(archive_path, exist_ok=True)
os.makedirs(os.path.join(archive_path, "partition_table"), exist_ok=True)
os.makedirs(os.path.join(archive_path, "bootloader"), exist_ok=True)
# Copy files from build directory to archive directory
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".bin"), archive_path)
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".elf"), archive_path)
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".map"), archive_path)
shutil.copy2(os.path.join(BUILD_DIR, "partitions.csv"), archive_path)
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".bootloader.bin"), os.path.join(archive_path, "bootloader"))
shutil.copy2(os.path.join(BUILD_DIR, PROJ_NAME + ".partitions.bin"), os.path.join(archive_path, "partition_table"))
with open(os.path.join(BUILD_DIR, PROJ_NAME + ".bin"), "rb") as bin_file:
bin_file.seek(VERSION_NAME_OFFSET)
version_name = (bin_file.read(VERSION_NAME_SIZE).decode("utf-8")).split("\x00", 1)[0]
bin_file.seek(PROJECT_NAME_OFFSET)
project_name = (bin_file.read(PROJECT_NAME_SIZE).decode("utf-8")).split("\x00", 1)[0]
project_build_config_obj = {"project": {"name": project_name, "version": version_name}}
with open(os.path.join(archive_path, "project_build_config.json"), "w") as json_file:
json_file.write(json.dumps(project_build_config_obj))
shutil.make_archive(out_path, "zip", BUILD_DIR, PROJ_NAME)
print("Archive created at {}".format(out_path + ".zip"))
return
if __name__ == "__main__":
main()