(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT_VARS) op: Equal rhs: {(DQ ("JAR OUTPUT PREPROCESSOR PROTO_COMPILER SOURCE"))} spids: [58] ) ] spids: [58] ) (C {(Lit_Other ":")} { (DQ (BracedVarSub token: <VSub_Name PREPROCESSOR> suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(cat)}) spids: [70 74] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PROGRAM_NAME) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*") (Lit_Slash /)}) spids: [83 88] ) ) } spids: [81] ) ] spids: [81] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TIMESTAMP) op:Equal rhs:{(198001010000)} spids:[95])] spids: [95] ) (FuncDef name: err body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ (${ VSub_Name PROGRAM_NAME) (": ") (${ VSub_Star "*"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[133])] ) (C {(exit)} {(1)}) ] spids: [118] ) spids: [114 117] ) (FuncDef name: main body: (BraceGroup children: [ (AndOr children: [ (C {(Lit_Other "[")} {(${ VSub_Pound "#")} {(-eq)} {(0)} {(Lit_Other "]")}) (C {(err)} {(DQ ("No arguments allowed; set the following environment"))} {(DQ ("variables for configuration instead: ") (${ VSub_Name INPUT_VARS))} ) ] op_id: Op_DPipe ) (ForEach iter_name: var iter_words: [{(${ VSub_Name INPUT_VARS)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:value) op:Equal spids:[200])] spids: [198] ) (C {(eval)} { (DQ ("value=") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (${ VSub_Name var) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } ) (AndOr children: [ (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name value))} {(Lit_Other "]")}) (C {(err)} {(DQ ("Input environment variable ") (${ VSub_Name var) (" is not set"))} ) ] op_id: Op_DPipe ) ] spids: [195 241] ) spids: [189 193] ) (C {(rm)} {(-f)} {(DQ (${ VSub_Name OUTPUT))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:proto_output) op: Equal rhs: {(DQ (${ VSub_Name OUTPUT) (.proto_output))} spids: [259] ) ] spids: [257] ) (C {(rm)} {(-rf)} {(DQ (${ VSub_Name proto_output))}) (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name proto_output))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:processed_dir) op: Equal rhs: {(DQ (${ VSub_Name OUTPUT) (.preprocessed))} spids: [305] ) ] spids: [303] ) (C {(rm)} {(-rf)} {(DQ (${ VSub_Name processed_dir))}) (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name processed_dir))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:processed_source) op: Equal rhs: { (DQ (${ VSub_Name processed_dir) (/) (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ (${ VSub_Name SOURCE))})] ) left_token: <Left_CommandSub "$("> spids: [344 352] ) ) } spids: [338] ) ] spids: [336] ) (AndOr children: [ (SimpleCommand words: [{(DQ (${ VSub_Name PREPROCESSOR))}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ (${ VSub_Name SOURCE))} spids: [362] ) (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name processed_source))} spids: [369] ) ] ) (C {(err)} {(DQ ("Preprocessor ") (${ VSub_Name PREPROCESSOR) (" failed"))}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name GRPC_JAVA_PLUGIN))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (AndOr children: [ (C {(DQ (${ VSub_Name PROTO_COMPILER))} {(--plugin) (Lit_Other "=") (protoc-gen-grpc) (Lit_Other "=") (DQ (${ VSub_Name GRPC_JAVA_PLUGIN)) } {(--grpc_out) (Lit_Other "=") (DQ (${ VSub_Name proto_output))} {(--java_out) (Lit_Other "=") (DQ (${ VSub_Name proto_output))} {(DQ (${ VSub_Name processed_source))} ) (C {(err)} {(DQ ("proto_compiler failed"))}) ] op_id: Op_DPipe ) ] spids: [-1 407] ) ] else_action: [ (AndOr children: [ (C {(DQ (${ VSub_Name PROTO_COMPILER))} {(--java_out) (Lit_Other "=") (DQ (${ VSub_Name proto_output))} {(DQ (${ VSub_Name processed_source))} ) (C {(err)} {(DQ ("proto_compiler failed"))}) ] op_id: Op_DPipe ) ] spids: [461 495] ) (AndOr children: [ (C {(find)} {(DQ (${ VSub_Name proto_output))} {(-exec)} {(touch)} {(-t)} {(DQ (${ VSub_Name TIMESTAMP))} {(SQ <"{}">)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\;">)} ) (C {(err)} {(DQ ("Failed to reset timestamps"))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(DQ (${ VSub_Name JAR))} {(cMf)} {(DQ (${ VSub_Name OUTPUT) (.tmp))} {(-C)} {(DQ (${ VSub_Name proto_output))} {(.)} ) (C {(err)} {(DQ ("jar failed"))}) ] op_id: Op_DPipe ) (C {(mv)} {(DQ (${ VSub_Name OUTPUT) (.tmp))} {(DQ (${ VSub_Name OUTPUT))}) ] spids: [151] ) spids: [147 150] ) (C {(main)} {(DQ (${ VSub_At "@"))}) ] )