Files
autoflash/flash.py
2019-07-29 13:41:55 -04:00

68 lines
1.8 KiB
Python

#!/usr/bin/env python3
import threading
import loader
from queue import Queue
import subprocess
import time
import fourletterphat as flp
#--
q = Queue()
t = loader.bgload(3, .1)
#--
def disp_string(string):
for letter in range(0,3) if len(string) > 3 else range(0, len(string)):
try:
flp.set_digit(letter, string[letter].upper())
except IndexError:
pass
flp.show()
def get_mountedlist():
return [item[item.find("/"):] for item in subprocess.check_output(
["/bin/bash", "-c", "lsblk"]).decode("utf-8").split("\n") if "/" in item]
def get_mounted_devs():
cmd = ["/bin/bash", "-c", "lsblk"]
output = subprocess.check_output(cmd).decode("utf-8").split("\n")
res = set()
for item in output:
if item.startswith("sd"):
# print(f"Found /dev/{item.split(' ')[0]}")
res.add(f"/dev/{item.split(' ')[0]}")
return res
def flash(dev):
loader.q.put(dev)
try:
flash_cmd = ["/bin/dd", "if=/home/pi/Downloads/2019-07-10-raspbian-buster-lite.img", f"of={dev}"]
output = subprocess.check_output(flash_cmd).decode("utf-8")
print(output)
return True
except BaseException as err:
print(err)
disp_string('ERR')
finally:
loader.q.get()
if __name__=="__main__":
disp_string("GO")
done = set()
while True:
devs = get_mounted_devs()
done = done.intersection(devs)
for dev in devs:
if dev not in done:
print(f"Flashing {dev}")
disp_string(dev.split("/")[2])
if flash(dev):
print(f"Flashed {dev}")
disp_string("GO")
time.sleep(.5)
done.add(dev)
time.sleep(1)