(List (= scope= flags=0 words=[] bindings=[('DEPS_STRING', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('INFO', {[LIT_CHARS tools/v8-info.sh]})]) (= scope= flags=0 words=[] bindings=[('V8', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})][LIT_CHARS /..]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (FunctionDef usage [] (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "usage: "][VarSub 0][LIT_CHARS " OPTIONS\n"][LIT_CHARS "\n"][LIT_CHARS "Run in chromium/src to get information about V8 rolls.\n"][LIT_CHARS "\n"][LIT_CHARS "OPTIONS:\n"][LIT_CHARS " -h Show this message.\n"][LIT_CHARS " -n Number of rolls to print information about.\n"][LIT_CHARS " -s Chromium git hash to start printing V8 information about.\n"]]} 0), > ) ) (FunctionDef v8_line [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[VarSub 1] [LIT_OTHER ":"] [LIT_CHARS DEPS]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -n]} {[VarSub DEPS_STRING]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS ":"]]} {[LIT_CHARS -f1]}) ) ) (FunctionDef v8_info [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS blame]} {[LIT_CHARS -L] [ComSub (Com {[LIT_CHARS v8_line]} {[VarSub 1]})] [LIT_COMMA ","] [LIT_OTHER "+"] [LIT_CHARS 1]} {[VarSub 1]} {[LIT_CHARS DEPS]}) (Com {[LIT_CHARS grep]} {[VarSub DEPS_STRING]}) ) ) (FunctionDef v8_svn [] (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) ) (FunctionDef v8_roll [] (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS " "]]} {[LIT_CHARS -f1]}) ) (FunctionDef find_rev [] (Com {[LIT_CHARS git]} {[LIT_CHARS svn]} {[LIT_CHARS find-rev]} {[VarSub 1]}) ) (FunctionDef msg [] (List (= scope= flags=0 words=[] bindings=[('msg', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --format] [LIT_OTHER "="] [DQ [LIT_CHARS "%h %ci %ce"]]} {[LIT_CHARS -1]} {[VarSub 1]})]})]) (= scope= flags=0 words=[] bindings=[('h', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub msg]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS " "]]} {[LIT_CHARS -f1]}) )]})]) (= scope= flags=0 words=[] bindings=[('d', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub msg]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS " "]]} {[LIT_CHARS -f2]}) )]})]) (= scope= flags=0 words=[] bindings=[('t', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub msg]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS " "]]} {[LIT_CHARS -f3]}) )]})]) (= scope= flags=0 words=[] bindings=[('a', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub msg]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS " "]]} {[LIT_CHARS -f5]}) )]})]) (= scope= flags=0 words=[] bindings=[('a1', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub a]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS "@"]]} {[LIT_CHARS -f1]}) )]})]) (= scope= flags=0 words=[] bindings=[('a2', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub a]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [DQ [LIT_CHARS "@"]]} {[LIT_CHARS -f2]}) )]})]) (Com {[LIT_CHARS echo]} {[VarSub h]} {[VarSub d]} {[VarSub t]} {[VarSub a1] [LIT_OTHER "@"] [VarSub a2]}) ) ) (FunctionDef v8_revision [] (List (Com {[LIT_CHARS cd]} {[VarSub V8]}) (Com {[VarSub INFO]} {[LIT_CHARS -v]} {[VarSub 1]}) ) ) (FunctionDef rolls [] (List (= scope= flags=0 words=[] bindings=[('roll', {[VarSub 2]})]) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 1]} {[VarSub 1]})]}]) (List (= scope= flags=0 words=[] bindings=[('info', {[ComSub (Com {[LIT_CHARS v8_info]} {[VarSub roll]})]})]) (= scope= flags=0 words=[] bindings=[('roll', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub info]}) (Com {[LIT_CHARS v8_roll]} {[VarSub roll]}) )]})]) (= scope= flags=0 words=[] bindings=[('trunk', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub info]}) (Com {[LIT_CHARS v8_svn]} {[VarSub roll]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS v8_revision]} {[VarSub trunk]})][LIT_CHARS " "][VarSub trunk][LIT_CHARS " "][ComSub (Com {[LIT_CHARS find_rev]} {[VarSub roll]})][LIT_CHARS " "][ComSub (Com {[LIT_CHARS msg]} {[VarSub roll]})]]}) (= scope= flags=0 words=[] bindings=[('roll', {[VarSub roll] [LIT_OTHER "^"] [LIT_CHARS 1]})]) ) ) ) ) (= scope= flags=0 words=[] bindings=[('REVISIONS', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('START', {[LIT_CHARS HEAD]})]) (While (Com {[LIT_CHARS getopts]} {[DQ [LIT_CHARS ":hn:s:"]]} {[LIT_CHARS OPTION]}) (Case to_match={[VarSub OPTION]}, pat_word_list=[[{[LIT_CHARS h]}], [{[LIT_CHARS n]}], [{[LIT_CHARS s]}], [{[LIT_OTHER "?"]}]] (List (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (= scope= flags=0 words=[] bindings=[('REVISIONS', {[VarSub OPTARG]})]) (= scope= flags=0 words=[] bindings=[('START', {[VarSub OPTARG]})]) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Illegal option: -"][VarSub OPTARG]]}) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (Com {[LIT_CHARS rolls]} {[VarSub REVISIONS]} {[VarSub START]}) )