EMF_Camp_Badge/.development/copy_via_repl_header.py

77 lines
1.7 KiB
Python

# This is meant to run on the badge
import hashlib, binascii, os
def split(path):
if path == "":
return ("", "")
r = path.rsplit("/", 1)
if len(r) == 1:
return ("", path)
head = r[0]
if not head:
head = "/"
return (head, r[1])
def dirname(path):
return split(path)[0]
def exists(path):
try:
os.stat(path)[0]
return True
except OSError:
return False
def makedirs(path):
sub_path = split(path)[0]
if sub_path and (not exists(sub_path)):
makedirs(sub_path)
if not exists(path):
os.mkdir(path)
def isdir(path):
try:
return os.stat(path)[0] & 0o170000 == 0o040000
except OSError:
return False
def h(p):
try:
with open(p, "rb") as f:
h = hashlib.sha256()
h.update(f.read())
print(str(binascii.hexlify(h.digest()), "utf8")[:10])
return
except:
pass
print("nooooooooo")
def w(p, c):
try:
print("file", p)
makedirs(dirname(p))
with open(p, "wb") as f:
f.write(binascii.a2b_base64(c))
os.sync()
print("OK")
except Exception as e:
import sys
print("Error while writing file %s" % p)
sys.print_exception(e)
pass
def clean(path=""):
for s in os.listdir(path):
full = "/".join([path, s]) if path else s
try:
if isdir(full):
try:
clean(full)
except:
pass
os.rmdir(full)
else:
os.remove(full)
except Exception as e:
print("Error while trying to clean '%s'" % full)