(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_LIB'))})) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BALLS_LIB) op:Equal rhs:{(.)} spids:[15])] spids: [15] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_CONF'))})) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BALLS_CONF) op:Equal rhs:{(./config.sh)} spids:[31])] spids: [31] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_ROOT'))})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BALLS_ROOT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(readlink)} {(-f)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {($ VSub_Name '$BALLS_CONF')})] ) left_token: <Left_CommandSub '$('> spids: [53 57] ) (/../) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [47 60] ) } spids: [46] ) ] spids: [46] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_LIB'))})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BALLS_LIB) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number '$0')})]) left_token: <Left_CommandSub '$('> spids: [75 79] ) } spids: [74] ) ] spids: [74] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_TMP'))})) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BALLS_TMP) op:Equal rhs:{(/tmp/balls)} spids:[94])] spids: [94] ) ] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_d child:{(DQ ($ VSub_Name '$BALLS_TMP'))})) (C {(mkdir)} {(DQ ($ VSub_Name '$BALLS_TMP'))}) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_PORT'))})) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BALLS_PORT) op:Equal rhs:{(3000)} spids:[128])] spids: [128] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_VIEWS'))})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BALLS_VIEWS) op: Equal rhs: {($ VSub_Name '$BALLS_ROOT') (/views)} spids: [144] ) ] spids: [144] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$BALLS_ACTIONS'))})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BALLS_ACTIONS) op: Equal rhs: {($ VSub_Name '$BALLS_ROOT') (/actions)} spids: [160] ) ] spids: [160] ) ] ) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/util.sh)}) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/http.sh)}) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/router.sh)}) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/server.sh)}) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/view.sh)}) (C {(.)} {($ VSub_Name '$BALLS_LIB') (/model.sh)}) ] )