(List (= scope= flags=0 words=[] bindings=[('NEEDED_PROGRAMS', {[Array {[LIT_CHARS curl]} {[LIT_CHARS git]} {[LIT_CHARS rsync]} {[LIT_CHARS ssh]}]})]) (= scope= flags=0 words=[] bindings=[('FAILED', {[LIT_CHARS 0]})]) (For binary [{[VarSub NEEDED_PROGRAMS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}]) (If (Pipeline! (Com {[LIT_CHARS which]} {[VarSub binary]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (= scope= flags=0 words=[] bindings=[('FAILED', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unable to locate "][VarSub binary][LIT_CHARS " on the path."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) ) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[VarSub FAILED]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please see above error output to determine which programs you need to install or make available on your path. Aborting."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) )