(command.CommandList children: [ (C {(Id.KW_Set set)} {(-e)} {(-x)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [32] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$action')} right: {(DQ (build))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:49) ) ] action: [ (C {(cd)} {(/io)}) (command.ForEach iter_name: PYBIN iter_words: [{(/opt/python/) (Id.Lit_Star '*') (/bin)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(DQ ($ Id.VSub_DollarName '$PYBIN') (/pip))} {(install)} {(-r)} {(requirements/wheel.pip)} ) (C {(DQ ($ Id.VSub_DollarName '$PYBIN') (/python))} {(setup.py)} {(bdist_wheel)} {(-d)} {(word_part.TildeSub token:(Token id:Id.Lit_TildeLike val:'~' span_id:100)) (/wheelhouse/)} ) ] ) ) (C {(cd)} {(word_part.TildeSub token:(Token id:Id.Lit_TildeLike val:'~' span_id:109))}) (command.ForEach iter_name: whl iter_words: [{(wheelhouse/) (Id.Lit_Star '*') (.whl)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(auditwheel)} {(repair)} {(DQ ($ Id.VSub_DollarName '$whl'))} {(-w)} {(/io/dist/)}) ] ) ) ] spids: [36 51] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$action')} right: {(DQ (test))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:160) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TOXBIN) op: assign_op.Equal rhs: {(/opt/python/cp27-cp27m/bin)} spids: [169] ) ] ) (C {(DQ ($ Id.VSub_DollarName '$TOXBIN') (/pip))} {(install)} {(-r)} {(/io/requirements/ci.pip)} ) (command.ForEach iter_name: PYBIN iter_words: [{(/opt/python/) (Id.Lit_Star '*') (/bin/)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PYNAME) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:201) command_list: (command.CommandList children: [ (C {(DQ ($ Id.VSub_DollarName '$PYBIN') (/python))} {(-c)} { (DQ ( "import sys; print('python{0[0]}.{0[1]}'.format(sys.version_info))" ) ) } ) ] ) ) } spids: [200] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TOXENV) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:216) command_list: (command.CommandList children: [ (C {(DQ ($ Id.VSub_DollarName '$PYBIN') (/python))} {(-c)} { (DQ ( "import sys; print('py{0[0]}{0[1]}'.format(sys.version_info))" ) ) } ) ] ) ) } spids: [215] ) ] ) (C {(ln)} {(-s)} {(DQ ($ Id.VSub_DollarName '$PYBIN') (/) ($ Id.VSub_DollarName '$PYNAME'))} {(/usr/local/bin/) ($ Id.VSub_DollarName '$PYNAME')} ) (C {(DQ ($ Id.VSub_DollarName '$TOXBIN') (/tox))} {(-e)} {($ Id.VSub_DollarName '$TOXENV')} ) (C {(rm)} {(-f)} {(/usr/local/bin/) ($ Id.VSub_DollarName '$PYNAME')}) ] ) ) ] spids: [147 162] ) ] else_action: [(C {(echo)} {(DQ ('Need an action to perform!'))})] ) ] )