aboutsummaryrefslogtreecommitdiff
path: root/picoducky.py
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2022-06-21 16:54:16 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2022-06-21 16:54:16 +0530
commit2423eadd0b6fd0eb4d92c8ddd0f605a6b1075b09 (patch)
tree1544be2201b285f553f8ee18a613adcfd709c32e /picoducky.py
parent4fd287655a72b9aea14cdac715ad5b90ed082ed2 (diff)
some progressV1.0
Diffstat (limited to 'picoducky.py')
-rw-r--r--picoducky.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/picoducky.py b/picoducky.py
new file mode 100644
index 0000000..a82ece0
--- /dev/null
+++ b/picoducky.py
@@ -0,0 +1,63 @@
+import os
+import subprocess
+from shutil import which
+from termcolor import colored
+import sys
+
+# Dependancy check
+def depcheck():
+ checklist = {}
+ # Returns None if docker is not present
+ checklist['docker'] = which('docker')
+ checklist['circuitpython'] = os.path.isdir('circuitpython')
+ return checklist
+
+# Build image
+def buildimage():
+ # Get ready to build
+ os.chdir('circuitpython')
+ # Build the image
+ print(colored('[+]> Building image, this may take a few minutes..', 'green'))
+ subprocess.call('docker build -t picoducky .', shell=True)
+ print("Done!")
+
+# Check if image already exists
+def imagecheck():
+ if subprocess.check_output('docker images -q picoducky 2> /dev/null', shell=True):
+ return True
+ else:
+ return False
+
+def main():
+ dockerpresent = depcheck()['docker']
+ circuitpythonpresent = depcheck()['circuitpython']
+
+ # Check if docker is present
+ if dockerpresent:
+ print(colored('[+]> Docker is present, script can continue..', 'green'))
+ else:
+ print(colored('[!]> Please make sure Docker is installed and is in your PATH.', 'red'))
+
+ # Build image, skip build if image is already built
+ if imagecheck():
+ print(colored("[+]> Looks like the Docker image is already built, I will skip that step.", 'green'))
+ else:
+ if circuitpythonpresent:
+ print(colored('[+]> Circuitpython directory is present, build can continue.', 'green'))
+ else:
+ print(colored('[-]> Circuitpython directory is absent, build cannot continue. Exitting...', 'red'))
+ sys.exit(1)
+ buildimage()
+
+ # Run container and start build
+ subprocess.call("docker rm picoduckyrun >/dev/null 2>/dev/null", shell=True)
+
+ print(colored('[+]> Everything went fine, starting firmware build..', 'green'))
+ subprocess.call('docker run --name picoduckyrun --mount type=bind,source="$(pwd)/generated",dst="/mounted" picoducky', shell=True)
+
+ # Copy UF2 file
+ print(colored('Looks like the build succeeded, copying the file here...','green'))
+ subprocess.call("docker cp picoduckyrun:/circuitpython/firmware.uf2 firmware.uf2", shell=True)
+
+if __name__ == "__main__":
+ main() \ No newline at end of file