(List (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 1]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "usage: "][VarSub 0][LIT_CHARS " "]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('dest_dir', {[VarSub 1]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -r]} {[LIT_CHARS modpyb.c]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "must be in stm directory"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('date', {[ComSub (Com {[LIT_CHARS date]} {[SQ ]})]})]) (= scope= flags=0 words=[] bindings=[('git_tag', {[DQ [ComSub (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --dirty]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS unknown]}) )]]})]) (For board [{[LIT_CHARS PYBV3]}, {[LIT_CHARS PYBV10]}]) (List (Com {[LIT_CHARS echo]} {[VarSub board]} ) (= scope= flags=0 words=[] bindings=[('lower_board', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub board]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS A-Z]} {[LIT_CHARS a-z]}) )]})]) (= scope= flags=0 words=[] bindings=[('build_dir', {[LIT_CHARS /tmp/stm-build-] [VarSub board]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS make]} {[LIT_CHARS -B]} {[LIT_VAR_LIKE "BOARD="] [VarSub board] =} {[LIT_VAR_LIKE "BUILD="] [VarSub build_dir] =} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS mv]} {[VarSub build_dir] [LIT_CHARS /firmware.dfu]} {[VarSub dest_dir] [LIT_CHARS /] [VarSub lower_board] [LIT_CHARS -] [VarSub date] [LIT_CHARS -] [VarSub git_tag] [LIT_CHARS .dfu]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub build_dir]} ) ) ) )