(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 40 stdin_parts: [ <'Usage: '> ($ Id.VSub_Number '$0') <' <VERSION_NUMBER>\n'> <'\n'> <'Example:\n'> <' '> <Id.Lit_Dollar '$'> <' '> ($ Id.VSub_Number '$0') <' 3.0.0\n'> <'\n'> < 'This script will download pre-built protoc binaries from maven repository and\n' > < 'create the Google.Protobuf.Tools package. Well-known type .proto files will also\n' > <'be included.\n'> ] ) ) ] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [4 17] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSION_NUMBER) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [49] ) ] ) (C {<declare>} {<-a>} {<Id.Lit_VarLike 'FILE_NAMES='> (sh_array_literal left: <Id.Op_LParen _> words: [ {<windows_x86>} {<windows-x86_32.exe>} {<windows_x64>} {<windows-x86_64.exe>} {<macosx_x86>} {<osx-x86_32.exe>} {<macosx_x64>} {<osx-x86_64.exe>} {<linux_x86>} {<linux-x86_32.exe>} {<linux_x64>} {<linux-x86_64.exe>} ] ) } ) (C {<set>} {<-e>}) (C {<mkdir>} {<-p>} {<protoc>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name FILE_NAMES> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 2>} ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIR_NAME) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FILE_NAMES> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) } spids: [141] ) ] ) (C {<mkdir>} {<-p>} {<'protoc/'> ($ Id.VSub_DollarName '$DIR_NAME')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name DIR_NAME> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 3>} ) ) } {<Id.Lit_Equals '='>} {(DQ <win>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGET_BINARY) op: assign_op.Equal rhs: {(DQ <protoc.exe>)} spids: [183] ) ] ) ] spids: [159 180] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGET_BINARY) op: assign_op.Equal rhs: {(DQ <protoc>)} spids: [192] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BINARY_NAME) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FILE_NAMES> bracket_op: (bracket_op.ArrayIndex expr: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } ) ) } spids: [202] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BINARY_URL) op: assign_op.Equal rhs: {<http> <Id.Lit_Colon ':'> <'//repo1.maven.org/maven2/com/google/protobuf/protoc/'> (${ Id.VSub_Name VERSION_NUMBER) <'/protoc-'> (${ Id.VSub_Name VERSION_NUMBER) <-> (${ Id.VSub_Name BINARY_NAME) } spids: [216] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [ {<wget>} {(${ Id.VSub_Name BINARY_URL)} {<-O>} {<'protoc/'> ($ Id.VSub_DollarName '$DIR_NAME') <'/'> ($ Id.VSub_DollarName '$TARGET_BINARY') } ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {(DQ <'[ERROR] Failed to download '> (${ Id.VSub_Name BINARY_URL))} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [ {<echo>} { (DQ <'[ERROR] Skipped '> ($ Id.VSub_DollarName '$protoc') <-> (${ Id.VSub_Name VERSION_NAME) <-> (${ Id.VSub_Name DIR_NAME) ) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Continue continue>) ] spids: [234 256] ) ] ) ] ) ) (C {<nuget>} {<pack>} {<Google.Protobuf.Tools.nuspec>}) ] )