(List (= scope= flags=0 words=[] bindings=[('INPUT_VARS', {[DQ [LIT_CHARS "JAR OUTPUT PREPROCESSOR PROTO_COMPILER SOURCE"]]})]) (Com {[LIT_OTHER ":"]} {[DQ [VarSub PREPROCESSOR test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS cat]}]]}) (= scope= flags=0 words=[] bindings=[('PROGRAM_NAME', {[DQ [VarSub 0 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) (= scope= flags=0 words=[] bindings=[('TIMESTAMP', {[LIT_CHARS 198001010000]})]) (FunctionDef err [] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub PROGRAM_NAME][LIT_CHARS ": "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef main [] (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "No arguments allowed; set the following environment"]]} {[DQ [LIT_CHARS "variables for configuration instead: "][VarSub INPUT_VARS]]}) ) (For var [{[VarSub INPUT_VARS]}]) (List (= scope= flags=0 words=[{[LIT_CHARS value]}] bindings=[]) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "value="][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub var][\ LIT_ESCAPED_CHAR "\\\""]]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub value]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "Input environment variable "][VarSub var][LIT_CHARS " is not set"]]}) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub OUTPUT]]}) (= scope= flags=0 words=[] bindings=[('proto_output', {[DQ [VarSub OUTPUT][LIT_CHARS .proto_output]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub proto_output]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub proto_output]]}) (= scope= flags=0 words=[] bindings=[('processed_dir', {[DQ [VarSub OUTPUT][LIT_CHARS .preprocessed]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub processed_dir]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub processed_dir]]}) (= scope= flags=0 words=[] bindings=[('processed_source', {[DQ [VarSub processed_dir][LIT_CHARS /][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub SOURCE]]})]]})]) (AndOr OP_OR_IF (Com {[DQ [VarSub PREPROCESSOR]]} < (FilenameRedirectNode filename={[DQ [VarSub SOURCE]]} 0), (FilenameRedirectNode filename={[DQ [VarSub processed_source]]} "> 1), > ) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "Preprocessor "][VarSub PREPROCESSOR][LIT_CHARS " failed"]]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub GRPC_JAVA_PLUGIN]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[DQ [VarSub PROTO_COMPILER]]} {[LIT_CHARS --plugin] [LIT_OTHER "="] [LIT_CHARS protoc-gen-grpc] [LIT_OTHER "="] [DQ [VarSub GRPC_JAVA_PLUGIN]]} {[LIT_CHARS --grpc_out] [LIT_OTHER "="] [DQ [VarSub proto_output]]} {[LIT_CHARS --java_out] [LIT_OTHER "="] [DQ [VarSub proto_output]]} {[DQ [VarSub processed_source]]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "proto_compiler failed"]]}) ) (ElseTrue) (AndOr OP_OR_IF (Com {[DQ [VarSub PROTO_COMPILER]]} {[LIT_CHARS --java_out] [LIT_OTHER "="] [DQ [VarSub proto_output]]} {[DQ [VarSub processed_source]]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "proto_compiler failed"]]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS find]} {[DQ [VarSub proto_output]]} {[LIT_CHARS -exec]} {[LIT_CHARS touch]} {[LIT_CHARS -t]} {[DQ [VarSub TIMESTAMP]]} {[SQ ]} {[\ LIT_ESCAPED_CHAR "\\;"]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "Failed to reset timestamps"]]}) ) (AndOr OP_OR_IF (Com {[DQ [VarSub JAR]]} {[LIT_CHARS cMf]} {[DQ [VarSub OUTPUT][LIT_CHARS .tmp]]} {[LIT_CHARS -C]} {[DQ [VarSub proto_output]]} {[LIT_CHARS .]}) (Com {[LIT_CHARS err]} {[DQ [LIT_CHARS "jar failed"]]}) ) (Com {[LIT_CHARS mv]} {[DQ [VarSub OUTPUT][LIT_CHARS .tmp]]} {[DQ [VarSub OUTPUT]]}) ) ) (Com {[LIT_CHARS main]} {[DQ [VarSub @]]}) )