1
+ import os
2
+ import sys
3
+ import shutil
4
+ import json
5
+
6
+ APP_HEADER_SIZE = 32
7
+ VERSION_NAME_OFFSET = APP_HEADER_SIZE + 16
8
+ VERSION_NAME_SIZE = 32
9
+ PROJECT_NAME_OFFSET = VERSION_NAME_OFFSET + VERSION_NAME_SIZE
10
+ PROJECT_NAME_SIZE = 32
11
+
12
+ # Input path of temporary build directory created by Arduino
13
+ BUILD_DIR = sys .argv [1 ]
14
+ # Input project name
15
+ PROJ_NAME = sys .argv [2 ]
16
+ # Input path to create output package
17
+ TARGET_PATH = sys .argv [3 ]
18
+
19
+ def main ():
20
+ print ("Creating ESP Insights Firmware Package." )
21
+ archive_path = os .path .join (TARGET_PATH , PROJ_NAME )
22
+
23
+ # Create target archive directories
24
+ os .makedirs (archive_path , exist_ok = True )
25
+ os .makedirs (os .path .join (archive_path , "partition_table" ), exist_ok = True )
26
+ os .makedirs (os .path .join (archive_path , "bootloader" ), exist_ok = True )
27
+
28
+ # Copy files from build directory to archive directory
29
+ shutil .copy2 (os .path .join (BUILD_DIR , PROJ_NAME + ".bin" ), archive_path )
30
+ shutil .copy2 (os .path .join (BUILD_DIR , PROJ_NAME + ".elf" ), archive_path )
31
+ shutil .copy2 (os .path .join (BUILD_DIR , PROJ_NAME + ".map" ), archive_path )
32
+ shutil .copy2 (os .path .join (BUILD_DIR , "partitions.csv" ), archive_path )
33
+ shutil .copy2 (os .path .join (BUILD_DIR , PROJ_NAME + ".bootloader.bin" ), os .path .join (archive_path , "bootloader" ))
34
+ shutil .copy2 (os .path .join (BUILD_DIR , PROJ_NAME + ".partitions.bin" ), os .path .join (archive_path , "partition_table" ))
35
+
36
+ with open (os .path .join (BUILD_DIR , PROJ_NAME + ".bin" ), 'rb' ) as bin_file :
37
+ bin_file .seek (VERSION_NAME_OFFSET )
38
+ version_name = (bin_file .read (VERSION_NAME_SIZE ).decode ('utf-8' )).split ('\x00 ' , 1 )[0 ]
39
+ bin_file .seek (PROJECT_NAME_OFFSET )
40
+ project_name = (bin_file .read (PROJECT_NAME_SIZE ).decode ('utf-8' )).split ('\x00 ' , 1 )[0 ]
41
+ project_build_config_obj = {
42
+ "project" : {
43
+ "name" : project_name ,
44
+ "version" : version_name
45
+ }
46
+ }
47
+ with open (os .path .join (archive_path , "project_build_config.json" ), "w" ) as json_file :
48
+ json_file .write (json .dumps (project_build_config_obj ))
49
+
50
+ shutil .make_archive (archive_path , "zip" , TARGET_PATH , PROJ_NAME )
51
+ print ("Archive created at {}" .format (archive_path + ".zip" ))
52
+ return
53
+
54
+ if __name__ == '__main__' :
55
+ main ()
0 commit comments