(List (= scope= flags=0 words=[] bindings=[('project', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS ciabot.project]})]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub project]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('here', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (While (Com {[LIT_OTHER ":"]} ) (List (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -d]} {[VarSub here] [LIT_CHARS /.git]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('project', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub here]})]})]) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub here]} {[LIT_DBRACKET_LIKE "="]} {[SQ ]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ciabot.sh: no .git below root!"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('here', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub here]})]})]) ) ) ) ) (= scope= flags=0 words=[] bindings=[('repo', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS ciabot.repo]})]})]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub repo] [LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('repo', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub project]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('revformat', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS ciabot.revformat]})]})]) (If (Com {[LIT_CHARS hostname]} {[LIT_CHARS -f]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('hostname', {[ComSub (Com {[LIT_CHARS hostname]} {[LIT_CHARS -f]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('hostname', {[ComSub (Com {[LIT_CHARS hostname]})]})]) ) (= scope= flags=0 words=[] bindings=[('urlprefix', {[DQ [LIT_CHARS "http://"][VarSub host][LIT_CHARS /cgi-bin/cgit.cgi/][VarSub repo][LIT_CHARS "/commit/?id="]]})]) (= scope= flags=0 words=[] bindings=[('generator', {[DQ [LIT_CHARS "http://www.catb.org/~esr/ciabot/ciabot.sh"]]})]) (= scope= flags=0 words=[] bindings=[('version', {[LIT_CHARS 3.5]})]) (= scope= flags=0 words=[] bindings=[('from', {[DQ [LIT_CHARS "CIABOT-NOREPLY@"][VarSub hostname]]})]) (= scope= flags=0 words=[] bindings=[('to', {[DQ [LIT_CHARS "cia@cia.vc"]]})]) (= scope= flags=0 words=[] bindings=[('sendmail', {[DQ [LIT_CHARS "sendmail -t -f "][VarSub from]]})]) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [VarSub PATH][LIT_CHARS ":/usr/sbin/"]]})]) (= scope= flags=0 words=[] bindings=[('mode', {[LIT_CHARS mailit]})]) (While (Com {[LIT_CHARS getopts]} {[LIT_CHARS pnV]} {[LIT_CHARS opt]} ) (Case to_match={[VarSub opt]}, pat_word_list=[[{[LIT_CHARS p]}], [{[LIT_CHARS n]}], [{[LIT_CHARS V]}]] (List (= scope= flags=0 words=[] bindings=[('project', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('mode', {[LIT_CHARS dumpit]})]) (Com {[LIT_CHARS shift]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ciabot.sh: version "][VarSub version]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS shift]} ) ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub project]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ciabot.sh: no project specified, bailing out."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('refname', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS HEAD]})]})]) (= scope= flags=0 words=[] bindings=[('merged', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('refname', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('merged', {[VarSub 2]})]) ) ) (= scope= flags=0 words=[] bindings=[('longurl', {[VarSub urlprefix] [VarSub merged]})]) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS wget]} {[LIT_CHARS -O]} {[LIT_CHARS -]} {[LIT_CHARS -q]} {[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //tinyurl.com/api-create.php] [LIT_OTHER "?"] [LIT_VAR_LIKE "url="] [VarSub longurl]})]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub url]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub longurl]]})]) ) (= scope= flags=0 words=[] bindings=[('refname', {[VarSub refname transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS heads] [LIT_SLASH /]}]]})]) (Case to_match={[VarSub revformat]}, pat_word_list=[[{[LIT_CHARS raw]}], [{[LIT_CHARS short]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('rev', {[VarSub merged]})]) (= scope= flags=0 words=[] bindings=[('rev', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS describe]} {[VarSub merged]})]})]) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[VarSub rev]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub merged]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c]} {[LIT_CHARS 1-12]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('author', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -1]} {[SQ ">]} {[VarSub merged]})]})]) (= scope= flags=0 words=[] bindings=[('author', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub author]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('logmessage', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -1]} {[SQ ]} {[VarSub merged]})]})]) (= scope= flags=0 words=[] bindings=[('ts', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -1]} {[SQ ]} {[VarSub merged]})]})]) (= scope= flags=0 words=[] bindings=[('files', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS -r]} {[LIT_CHARS --name-only]} {[VarSub merged]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ &-">]}) )]})]) (= scope= flags=0 words=[] bindings=[('out', {[DQ [LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " CIA Shell client for Git\n"][LIT_CHARS " "][VarSub version][LIT_CHARS "\n"][LIT_CHARS " "][VarSub generator][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " \n"][LIT_CHARS " "][VarSub project][LIT_CHARS "\n"][LIT_CHARS " "][VarSub repo][LIT_CHARS ":"][VarSub refname][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " "][VarSub ts][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " \n"][LIT_CHARS " "][VarSub author][LIT_CHARS "\n"][LIT_CHARS " "][VarSub rev][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS "\t"][VarSub files][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " "][VarSub logmessage][LIT_CHARS " "][VarSub url][LIT_CHARS "\n"][LIT_CHARS " "][VarSub url][LIT_CHARS "\n"][LIT_CHARS " \n"][LIT_CHARS " \n"][LIT_CHARS ""]]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub mode]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS dumpit]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('sendmail', {[LIT_CHARS cat]})]) ) (Com {[VarSub sendmail]} < (HereDocRedirectNode here_end='EOM' do_expansion=True body_word={[DQ [LIT_CHARS "Message-ID: <"][VarSub merged][LIT_CHARS .][VarSub author][LIT_CHARS "@"][VarSub project][LIT_CHARS ">\n"][LIT_CHARS "From: "][VarSub from][LIT_CHARS "\n"][LIT_CHARS "To: "][VarSub to][LIT_CHARS "\n"][LIT_CHARS "Content-type: text/xml\n"][LIT_CHARS "Subject: DeliverXML\n"][VarSub out][LIT_CHARS "\n"]]} 0), > ) )