(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_LIB'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_LIB) op: assign_op.Equal rhs: {<.>} spids: [15] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_CONF'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_CONF) op: assign_op.Equal rhs: {<'./config.sh'>} spids: [31] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_ROOT'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_ROOT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_DollarName '$BALLS_CONF')}) ) <'/../'> ) } ) ) } spids: [46] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_LIB'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_LIB) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_Number '$0')}) ) } spids: [74] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_TMP'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_TMP) op: assign_op.Equal rhs: {<'/tmp/balls'>} spids: [94] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{(DQ ($ Id.VSub_DollarName '$BALLS_TMP'))}) ) (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$BALLS_TMP'))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id:Id.BoolUnary_z child:{(DQ ($ Id.VSub_DollarName '$BALLS_PORT'))}) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_PORT) op: assign_op.Equal rhs: {<3000>} spids: [128] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$BALLS_VIEWS'))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_VIEWS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$BALLS_ROOT') <'/views'>} spids: [144] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {(DQ ($ Id.VSub_DollarName '$BALLS_ACTIONS'))} ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BALLS_ACTIONS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$BALLS_ROOT') <'/actions'>} spids: [160] ) ] ) ] ) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/util.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/http.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/router.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/server.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/view.sh'>}) (C {<.>} {($ Id.VSub_DollarName '$BALLS_LIB') <'/model.sh'>}) ] )