+
+
+
+
+
+
+
+
+'''
+
+parser = argparse.ArgumentParser()
+parser.add_argument('repo')
+args = parser.parse_args()
+repo = args.repo
+
+manif_folder = "/firmware_build/"
+manif_path = 'docs/.vuepress/public/firmware_build/'
+vue_path = 'docs/.vuepress/components/'
+cors_proxy = '' #'https://cors.bridged.cc/'
+esp32_blurl = 'https://github.com/espressif/arduino-esp32/raw/master/tools/sdk/esp32/bin/bootloader_dio_80m.bin'
+esp32_boot = 'https://github.com/espressif/arduino-esp32/raw/master/tools/partitions/boot_app0.bin'
+release = requests.get('https://api.github.com/repos/' + repo + '/releases/latest')
+rel_data = json.loads(release.text)
+
+if 'assets' in rel_data:
+ assets = rel_data['assets']
+else:
+ print('Assets not found')
+ os._exit(1)
+
+if not os.path.exists(manif_path):
+ os.makedirs(manif_path)
+
+if not os.path.exists(vue_path):
+ os.makedirs(vue_path)
+
+wu_file = open(vue_path + 'web-uploader.vue', 'w')
+wu_file.write(wu_temp_p1)
+
+bl_bin = requests.get(esp32_blurl)
+filename = esp32_blurl.split('/')[-1]
+with open(manif_path + filename,'wb') as output_file:
+ output_file.write(bl_bin.content)
+
+boot_bin = requests.get(esp32_boot)
+filename = esp32_boot.split('/')[-1]
+with open(manif_path + filename,'wb') as output_file:
+ output_file.write(boot_bin.content)
+
+for item in range(len(assets)):
+ name = assets[item]['name']
+ if 'firmware.bin' in name and ('esp32' in name or 'ttgo' in name or 'heltec' in name):
+ fw = name.split('-firmware')[0]
+ man_file = fw + '.manifest.json'
+ fw_url = assets[item]['browser_download_url']
+ fwp_url = fw_url.split('-firmware')[0] + '-partitions.bin'
+ mani_str = mf_temp32.substitute({'cp':cors_proxy, 'part':manif_folder + fwp_url.split('/')[-1], 'bin':manif_folder + fw_url.split('/')[-1], 'bl':manif_folder + esp32_blurl.split('/')[-1], 'boot':manif_folder + esp32_boot.split('/')[-1]})
+
+ with open(manif_path + man_file, 'w') as nf:
+ nf.write(mani_str)
+
+ wu_file.write(wu_temp_opt.substitute({'mff':manif_folder + man_file, 'mfn':fw}))
+
+ fw_bin = requests.get(fw_url)
+ filename = fw_url.split('/')[-1]
+ with open(manif_path + filename,'wb') as output_file:
+ output_file.write(fw_bin.content)
+
+ part_bin = requests.get(fwp_url)
+ filename = fwp_url.split('/')[-1]
+ with open(manif_path + filename,'wb') as output_file:
+ output_file.write(part_bin.content)
+
+ print('Created: ' + os.path.abspath(man_file))
+
+wu_file.write(wu_temp_p2)
+
+for item in range(len(assets)):
+ name = assets[item]['name']
+ if 'firmware.bin' in name and ('nodemcu' in name or 'sonoff' in name or 'rf-wifi-gateway' in name or 'manual-wifi-test' in name or 'rfbridge' in name):
+ fw = name.split('-firmware')[0]
+ man_file = fw + '.manifest.json'
+ fw_url = assets[item]['browser_download_url']
+ mani_str = mf_temp8266.substitute({'cp':cors_proxy, 'bin':manif_folder + fw_url.split('/')[-1]})
+
+ with open(manif_path + man_file, 'w') as nf:
+ nf.write(mani_str)
+
+ wu_file.write(manif_folder + wu_temp_opt.substitute({'mff':manif_folder + man_file, 'mfn':fw}))
+ fw_bin = requests.get(fw_url)
+ filename = fw_url.split('/')[-1]
+ with open(manif_path + filename,'wb') as output_file:
+ output_file.write(fw_bin.content)
+
+ part_bin = requests.get(fwp_url)
+ filename = fwp_url.split('/')[-1]
+ with open(manif_path + filename,'wb') as output_file:
+ output_file.write(part_bin.content)
+ print('Created: ' + os.path.abspath(man_file))
+
+wu_file.write(wu_temp_end)
+wu_file.close()