(command.CommandList children: [ (C {<set>} {<-ex>}) (C {<cd>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_Number '$0')}) ) <'/..'> } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git_root) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))} spids: [43] ) ] ) (C {<cd>} {<->}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DOCKER_IMAGE_NAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {($ Id.VSub_DollarName '$DOCKERFILE_DIR')}) ) <Id.Lit_Underscore _> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<sha1sum>} {($ Id.VSub_DollarName '$DOCKERFILE_DIR') <'/Dockerfile'>}) (C {<cut>} {<-f1>} {<-d> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>)} ) ] negated: F ) ) } spids: [56] ) ] ) (C {<docker>} {<build>} {<-t>} {($ Id.VSub_DollarName '$DOCKER_IMAGE_NAME')} {($ Id.VSub_DollarName '$DOCKERFILE_DIR')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CCACHE_DIR) op: assign_op.Equal rhs: {<'/tmp/protobuf-ccache'>} spids: [97] ) ] ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$CCACHE_DIR')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CONTAINER_NAME) op: assign_op.Equal rhs: { (DQ <build_and_run_docker_> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<uuidgen>}) ) ) } spids: [110] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<docker>} {<run>} {(DQ ($ Id.VSub_At '$@'))} {<-e>} {<Id.Lit_VarLike 'CCACHE_DIR='> ($ Id.VSub_DollarName '$CCACHE_DIR')} {<-e>} {<Id.Lit_VarLike 'EXTERNAL_GIT_ROOT='> (DQ <'/var/local/jenkins/protobuf'>)} {<-e>} {<Id.Lit_VarLike 'TEST_SET='> (DQ ($ Id.VSub_DollarName '$TEST_SET'))} {<-e>} {<Id.Lit_VarLike 'THIS_IS_REALLY_NEEDED='> (SQ <'see https://github.com/docker/docker/issues/14203 for why docker is awful'>) } {<-v>} {(DQ ($ Id.VSub_DollarName '$git_root') <':/var/local/jenkins/protobuf:ro'>)} {<-v>} {($ Id.VSub_DollarName '$CCACHE_DIR') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$CCACHE_DIR') } {<-w>} {<'/var/local/git/protobuf'>} {<--name> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$CONTAINER_NAME')} {($ Id.VSub_DollarName '$DOCKER_IMAGE_NAME')} {<bash>} {<-l>} {(DQ <'/var/local/jenkins/protobuf/'> ($ Id.VSub_DollarName '$DOCKER_RUN_SCRIPT'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FAILED) op: assign_op.Equal rhs: {(DQ <true>)} spids: [212] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$OUTPUT_DIR'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<docker>} {<cp>} { (DQ ($ Id.VSub_DollarName '$CONTAINER_NAME') <':/var/local/git/protobuf/'> ($ Id.VSub_DollarName '$OUTPUT_DIR') ) } {(DQ ($ Id.VSub_DollarName '$git_root'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FAILED) op: assign_op.Equal rhs: {(DQ <true>)} spids: [256] ) ] ) ] ) ] spids: [221 237] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<docker>} {<rm>} {<-f>} {($ Id.VSub_DollarName '$CONTAINER_NAME')}) (C {<true>})] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FAILED'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})] spids: [280 296] ) ] ) ] )