Update validate-recipes.yml #83
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Commit date to master | |
on: push | |
jobs: | |
build_summary: | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout the branch | |
- name: checkout | |
uses: actions/checkout@v2 # use either @v2-beta or @master. Eventually there will be a @v2 tag. | |
- name: setup python | |
uses: actions/setup-python@v2 | |
- name: build summary | |
uses: jannekem/run-python-script-action@v1 | |
with: | |
script: | | |
import os | |
os.chdir("Recipes") | |
import glob | |
#import numpy as np | |
def unroll_forloop(results): | |
results2 = [] | |
endline =0 | |
for i in range(len(results)): | |
if "FOR " in results[i]: | |
forCount = int(results[i].split()[1]) | |
startLine = i+1 | |
for repeats in range(forCount): | |
for nextLine in range(len(results)-i): | |
if "ENDFOR" in results[startLine+nextLine]: | |
endline = startLine+nextLine+1 | |
break | |
else: | |
results2.append(results[startLine+nextLine]) | |
else: | |
if i < endline: | |
pass | |
else: | |
results2.append(results[i]) | |
return results2 | |
def read_script(scriptname,parent,tab,state,darks,flat,summary,md,warning,childextension=".rcp"): | |
#print(f"{scriptname},{parent},{tab},{state},{darks},{flat},{summary},{md},{warning}") | |
script = open(scriptname,"r") | |
results = script.readlines() | |
script.close() | |
results2 = unroll_forloop(results) | |
summary.write(f" {tab*6*'-'} > {scriptname.split('#')[0]}\n") | |
runTime = 0 | |
color = "black" | |
if "_FW" not in scriptname and "setup" not in scriptname and "cbk" not in scriptname and "menu" not in scriptname: | |
if state['shut'] == "in": | |
color = "red" | |
if state['shut'] == "out" and state['calib'] =='out' and state['diffuser'] == "in": | |
color = "blue" | |
if state['shut'] == "out" and state['calib'] =='out' and state['diffuser'] == "out": | |
#print(state) | |
color = "green" | |
if color == "red": | |
md.write("📙 ") | |
if color == "black": | |
md.write("📕 ") | |
if color == "blue": | |
md.write("📘 ") | |
if color == "green": | |
md.write("📗 ") | |
md.write(f"<details><summary>{scriptname}</summary><blockquote><pre>") | |
tab = tab +1 | |
for child in results2: | |
filename =child.split('#')[0].strip() | |
child=child.strip().lower() | |
if len(child.strip()) > 0 and child.strip()[0] != "#" and not child.startswith("date") and not child.startswith("author") and not child.startswith("description"): | |
if childextension in child.split('#')[0]: | |
try: | |
runTime += read_script(filename,parent+","+child.split('#')[0],tab,state,darks,flats,summary,md,warning) | |
# runTime = runTime+runTime2 | |
#md.write(f"read_script out {runTime}") | |
except FileNotFoundError: | |
warning.write(f"{parent} tried to call *{filename}* which does not exist\n") | |
else: | |
#print(f"{state} {darks} {flat} {parent} {child}") | |
color = "black" | |
if "gain" in child: | |
state['gain'] = "low" if "low" in child else "high" | |
if "shut" in child: | |
state['shut'] = "in" if "in" in child else "out" | |
if "exposure" in child: | |
state['exposure'] = child.split(" ")[1] | |
#print(state) | |
if "cover" in child: | |
state['cover'] = "in" if "in" in child else "out" | |
if "occ" in child: | |
state['occ'] = "in" if "in" in child else "out" | |
if "calib" in child: | |
state['calib'] = "in" if "in" in child else "out" | |
if "diffuser" in child: | |
state['diffuser'] = "in" if "in" in child else "out" | |
if "data" in child: | |
#print(child) | |
data,cam,cont,wave,sums = child.split() | |
runTime += 300+int(state['exposure'])*4*int(sums) | |
if state['shut'] == "in": | |
color = "red" | |
if state['exposure']+state['gain']+sums not in darks: | |
darks.append(state['exposure']+state['gain']+sums) | |
if state['shut'] == "out" and state['calib'] =='out' and state['diffuser'] == "in": | |
color = "blue" | |
if state['gain']+sums+cam+cont+wave not in flats: | |
flats.append(state['gain']+sums+cam+cont+wave) | |
if state['shut'] == "out" and state['calib'] =='out' and state['diffuser'] == "out": | |
#print(state) | |
color = "green" | |
if state['exposure']+state['gain']+sums not in darks: | |
warning.write(f"{parent} {child} missing dark for {state['exposure']+state['gain']+sums}\n") | |
if state['gain']+sums+cam+cont+wave not in flats: | |
warning.write(f"{parent} {child} missing flat for {state['gain']+sums+cam+cont+wave}\n") | |
summary.write(f"{tab*6*'-'}> {child.split('#')[0]}\n") | |
rcpName = child.split('#')[0] | |
if "_FW" not in rcpName and "setup" not in rcpName and "cbk" not in rcpName and "menu" not in rcpName: | |
md.write(f"rcpname {rcpName}") | |
if color == "red": | |
md.write("📙 ") | |
if color == "black": | |
md.write("📕 ") | |
if color == "blue": | |
md.write("📘 ") | |
if color == "green": | |
md.write("📗 ") | |
md.write(f" {child.split('#')[0]} \n") | |
pass | |
script.close() | |
if "rcp" in childextension: | |
md.write(f"The above code block covers:{runTime/1000/60:.2f} minutes of camera integration + hardware moves and overhead") | |
md.write("</pre></blockquote></details>") | |
return runTime | |
menus = glob.glob("*.menu") | |
state = {} | |
darks = [] | |
flats = [] | |
warning = open('warnings.txt',"w") | |
for menu in menus: | |
state = {'exposure':"80",'shut':"",'calib':"",'occ':"",'diffuser':"",'gain':"high"} | |
darks = [] | |
flats = [] | |
md = open(menu.split(".menu")[0]+".md","w") | |
summary = open(menu.split(".menu")[0]+".summary","w") | |
quick_menu = open(menu,"r") | |
qmenu = quick_menu.readlines() | |
quick_menu.close() | |
if "NOWARNING" not in "".join(qmenu): | |
read_script(menu,menu,0,state,darks,flats,summary,md,warning,".cbk") | |
md.close() | |
summary.close() | |
warning.close() | |
- name: setup git config | |
run: | | |
# setup the username and email. I tend to use 'GitHub Actions Bot' with no email by default | |
git config user.name "GitHub Actions Bot" | |
git config user.email "<>" | |
- name: commit | |
run: | | |
# Stage the file, commit and push | |
git add . | |
git commit -m "Menu files re-summarized" --allow-empty | |
git push origin main |