(List (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub #]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 3]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: add-memzip.sh input.hex output.hex file-directory"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('input_hex', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('output_hex', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('memzip_src_dir', {[VarSub 3]})]) (= scope= flags=0 words=[] bindings=[('input_bin', {[VarSub input_hex] [LIT_CHARS .bin]})]) (= scope= flags=0 words=[] bindings=[('output_bin', {[VarSub output_hex] [LIT_CHARS .bin]})]) (= scope= flags=0 words=[] bindings=[('zip_file', {[VarSub output_hex] [LIT_CHARS .zip]})]) (= scope= flags=0 words=[] bindings=[('zip_base', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub zip_file]})]})]) (= scope= flags=0 words=[] bindings=[('zip_dir', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub zip_file]})]})]) (= scope= flags=0 words=[] bindings=[('abs_zip_dir', {[ComSub (Com {[LIT_CHARS realpath]} {[VarSub zip_dir]})]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub zip_file]} ) (Subshell (List (Com {[LIT_CHARS cd]} {[VarSub memzip_src_dir]} ) (Com {[LIT_CHARS zip]} {[LIT_CHARS -0]} {[LIT_CHARS -r]} {[LIT_CHARS -D]} {[VarSub abs_zip_dir] [LIT_CHARS /] [VarSub zip_base]} {[LIT_CHARS .]} ) ) ) (Com {[LIT_CHARS objcopy]} {[LIT_CHARS -I]} {[LIT_CHARS ihex]} {[LIT_CHARS -O]} {[LIT_CHARS binary]} {[VarSub input_hex]} {[VarSub input_bin]} ) (Com {[LIT_CHARS cat]} {[VarSub input_bin]} {[VarSub zip_file]} < (FilenameRedirectNode filename={[VarSub output_bin]} "> 1), > ) (Com {[LIT_CHARS objcopy]} {[LIT_CHARS -I]} {[LIT_CHARS binary]} {[LIT_CHARS -O]} {[LIT_CHARS ihex]} {[VarSub output_bin]} {[VarSub output_hex]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Added "][VarSub memzip_src_dir][LIT_CHARS " to "][VarSub input_hex][LIT_CHARS " creating "][VarSub output_hex]]} ) )