(CommandList children: [ (C {(set)} {(-o)} {(nounset)}) (C {(set)} {(-o)} {(pipefail)}) (C {(set)} {(-o)} {(errexit)}) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:OIL_VERSION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(head)} {(-n)} {(1)} {(oil-version.txt)})]) left_token: <Left_CommandSub '$('> spids: [89 97] ) } spids: [88] ) ] spids: [86] ) (FuncDef name: log body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[113])] ) ] spids: [104] ) spids: [100 103] ) (FuncDef name: build-and-test body: (BraceGroup children: [ (C {(rm)} {(-r)} {(-f)} {(_devbuild)} {(_build)} {(_release)}) (C {(rm)} {(-f)} {(_bin/oil.) (Lit_Other '*')}) (C {(build/dev.sh)} {(pylibc)}) (C {(build/doc.sh)} {(osh-quick-ref)}) (C {(test/unit.sh)} {(all)}) (C {(build/prepare.sh)} {(configure)}) (C {(build/prepare.sh)} {(build-python)}) (C {(make)} {(clean)}) (C {(make)}) (C {(test/spec.sh)} {(smoke)}) (C {(test/spec.sh)} {(link-busybox-ash)}) (C {(test/spec.sh)} {(all)}) (C {($ VSub_Number '$0')} {(oil)}) (C {(build/test.sh)} {(oil-tar)}) (C {(test/alpine.sh)} {(copy-tar)} {(oil)}) (C {(test/alpine.sh)} {(test-tar)} {(oil)}) ] spids: [264] ) spids: [260 263] ) (FuncDef name: _compressed-tarball body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)}) spids: [447 451] ) } spids: [446] ) ] spids: [444] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0.0.0)}) spids: [457 461] ) } spids: [456] ) ] spids: [454] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:in) op: Equal rhs: {(_release/) ($ VSub_Name '$name') (.tar)} spids: [467] ) ] spids: [465] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(_release/) ($ VSub_Name '$name') (-) ($ VSub_Name '$version') (.tar.gz)} spids: [475] ) ] spids: [473] ) (C {(build/actions.sh)} {(write-release-date)}) (C {(make)} {($ VSub_Name '$in')}) (TimeBlock pipeline: (SimpleCommand words: [{(gzip)} {(-c)} {($ VSub_Name '$in')}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out')} spids: [511] ) ] ) ) (C {(ls)} {(-l)} {($ VSub_Name '$out')}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out2) op: Equal rhs: {(_release/) ($ VSub_Name '$name') (-) ($ VSub_Name '$version') (.tar.xz)} spids: [530] ) ] spids: [528] ) (TimeBlock pipeline: (SimpleCommand words: [{(xz)} {(-c)} {($ VSub_Name '$in')}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out2')} spids: [546] ) ] ) ) (C {(ls)} {(-l)} {($ VSub_Name '$out2')}) ] spids: [441] ) spids: [437 440] ) (FuncDef name: oil body: (BraceGroup children: [(C {(_compressed-tarball)} {(oil)} {($ VSub_Name '$OIL_VERSION')})] spids: [564] ) spids: [560 563] ) (FuncDef name: hello body: (BraceGroup children: [ (C {(_compressed-tarball)} {(hello)} { (CommandSubPart command_list: (CommandList children: [(C {(head)} {(-n)} {(1)} {(build/testdata/hello-version.txt)})] ) left_token: <Left_CommandSub '$('> spids: [587 595] ) } ) ] spids: [580] ) spids: [576 579] ) (FuncDef name: escape-segments body: (BraceGroup children: [ (C {(python)} {(-c)} { (SQ <'\n'> <'import cgi, re, sys\n'> <'\n'> <'print re.sub(\n'> <' r"\\x00(.*)\\x01", \n'> <' lambda match: cgi.escape(match.group(1)),\n'> <' sys.stdin.read())\n'> ) } ) ] spids: [619] ) spids: [615 618] ) (FuncDef name: _git-changelog-body body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:prev_branch) op: Equal rhs: {($ VSub_Number '$1')} spids: [652] ) ] spids: [650] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:cur_branch) op: Equal rhs: {($ VSub_Number '$2')} spids: [658] ) ] spids: [656] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:format) op: Equal rhs: { (SQ <'<tr>\n'> <' <td><a class="checksum"\n'> <' href="https://github.com/oilshell/oil/commit/%H">%h</a>\n'> <' </td>\n'> <' <td class="date">%ad</td>\n'> <' <td>%x00%an%x01</td>\n'> <' <td class="subject">%x00%s%x01</td>\n'> <' </tr>'> ) } spids: [682] ) ] spids: [680] ) (Pipeline children: [ (C {(git)} {(log)} {($ VSub_Name '$prev_branch') (..) ($ VSub_Name '$cur_branch')} {(--reverse)} {(--pretty) (Lit_Other '=') (DQ ('format:') ($ VSub_Name '$format'))} {(--date) (Lit_Other '=') (short)} ) (C {(escape-segments)}) ] negated: False ) ] spids: [647] ) spids: [643 646] ) (FuncDef name: _git-changelog-header body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:prev_branch) op: Equal rhs: {($ VSub_Number '$1')} spids: [742] ) ] spids: [740] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:cur_branch) op: Equal rhs: {($ VSub_Number '$2')} spids: [748] ) ] spids: [746] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <title>Commits Between ') ($ VSub_Name '$prev_branch') (' and ') ($ VSub_Name '$cur_branch') ('</title>\n') (' <style>\n') (' /* Make it centered and skinny for readability */\n') (' body {\n') (' margin: 0 auto;\n') (' width: 60em;\n') (' }\n') (' table {\n') (' width: 100%;\n') (' }\n') (' code {\n') (' color: green;\n') (' }\n') (' .checksum {\n') (' font-family: monospace;\n') (' }\n') (' .date {\n') (' /*font-family: monospace;*/\n') (' }\n') (' .subject {\n') (' font-family: monospace;\n') (' }\n') ('\n') (' /* Copied from oilshell.org bundle.css */\n') (' .date {\n') (' font-size: medium;\n') (' color: #555;\n') (' padding-left: 1em;\n') (' }\n') (' </style>\n') (' </head>\n') (' <body>\n') (' <h3>Commits Between Branches <code>') ($ VSub_Name '$prev_branch') ('</code> and\n') (' <code>') ($ VSub_Name '$cur_branch') ('</code></h3>\n') (' <table>\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [755] ) ] ) ] spids: [737] ) spids: [733 736] ) (FuncDef name: _git-changelog body: (BraceGroup children: [ (C {(_git-changelog-header)} {(DQ ($ VSub_At '$@'))}) (C {(_git-changelog-body)} {(DQ ($ VSub_At '$@'))}) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ (' </table>\n'))} do_expansion: True here_end: EOF was_filled: True spids: [855] ) ] ) (C {(_html-footer)}) ] spids: [836] ) spids: [832 835] ) (FuncDef name: git-changelog-0.1 body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {(SQ <0.1.0>)} spids: [875] ) ] spids: [873] ) (SimpleCommand words: [{(_git-changelog)} {(release/0.0.0)} {(release/0.1.0)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(../oilshell.org__deploy/release/) ($ VSub_Name '$version') (/changelog.html)} spids: [889] ) ] ) ] spids: [870] ) spids: [866 869] ) (FuncDef name: git-changelog-0.2.alpha1 body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {(SQ <0.2.alpha1>)} spids: [907] ) ] spids: [905] ) (SimpleCommand words: [{(_git-changelog)} {(release/0.1.0)} {(release/0.2.alpha1)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_release/VERSION/changelog.html)} spids: [921] ) ] ) ] spids: [902] ) spids: [898 901] ) (FuncDef name: html-redirect body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {($ VSub_Number '$1')} spids: [940] ) ] spids: [938] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <meta http-equiv=') (Right_DoubleQuote '"') (refresh) (Right_DoubleQuote '"') (' content=') (Right_DoubleQuote '"') ('0; url=') ($ VSub_Name '$url') (Right_DoubleQuote '"') (' />\n') (' </head>\n') (' <body>\n') (' <p>Redirect to<a href=') (Right_DoubleQuote '"') ($ VSub_Name '$url') (Right_DoubleQuote '"') ('>') ($ VSub_Name '$url') ('</a></p>\n') (' </body>\n') ('</html> \n') ) } do_expansion: True here_end: EOF was_filled: True spids: [946] ) ] ) ] spids: [935] ) spids: [931 934] ) (FuncDef name: announcement-0.0 body: (BraceGroup children: [ (SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/07/23.html>)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(../oilshell.org__deploy/release/0.0.0/announcement.html)} spids: [992] ) ] ) ] spids: [981] ) spids: [977 980] ) (FuncDef name: announcement-0.1 body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {(SQ <0.1.0>)} spids: [1008] ) ] spids: [1006] ) (SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/09/09.html>)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(../oilshell.org__deploy/release/) ($ VSub_Name '$version') (/announcement.html)} spids: [1022] ) ] ) ] spids: [1003] ) spids: [999 1002] ) (FuncDef name: announcement-0.2.alpha1 body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {(SQ <0.2.alpha1>)} spids: [1040] ) ] spids: [1038] ) (SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/11/08.html>)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_release/VERSION/announcement.html)} spids: [1054] ) ] ) ] spids: [1035] ) spids: [1031 1034] ) (FuncDef name: _link body: (BraceGroup children: [(C {(ln)} {(-s)} {(-f)} {(-v)} {(--no-target-directory)} {(DQ ($ VSub_At '$@'))})] spids: [1065] ) spids: [1061 1064] ) (FuncDef name: compress body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:root) op: Equal rhs: {($ VSub_Name '$PWD') (/_release/VERSION/)} spids: [1094] ) ] spids: [1092] ) (C {(log)} {(DQ ('--- test/spec'))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(DQ ($ VSub_Name '$root') (/test/spec.wwz))} spids: [1109] ) ] spids: [1107] ) (C {(pushd)} {(_tmp/spec)}) (TimeBlock pipeline:(C {(zip)} {(-r)} {(-q)} {($ VSub_Name '$out')} {(.)})) (C {(popd)}) (C {(log)} {(DQ ('--- test/wild'))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(DQ ($ VSub_Name '$root') (/test/wild.wwz))} spids: [1150] ) ] spids: [1148] ) (C {(pushd)} {(_tmp/wild/www)}) (TimeBlock pipeline:(C {(zip)} {(-r)} {(-q)} {($ VSub_Name '$out')} {(.)})) (C {(popd)}) (C {(log)} {(DQ ('--- metrics/line-counts'))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(DQ ($ VSub_Name '$root') (/metrics/line-counts.wwz))} spids: [1192] ) ] spids: [1190] ) (C {(pushd)} {(_tmp/metrics/line-counts)}) (TimeBlock pipeline:(C {(zip)} {(-r)} {(-q)} {($ VSub_Name '$out')} {(.)})) (C {(popd)}) (C {(log)} {(DQ ('--- benchmarks/osh-parser'))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(DQ ($ VSub_Name '$root') (/benchmarks/osh-parser.wwz))} spids: [1233] ) ] spids: [1231] ) (C {(pushd)} {(_tmp/osh-parser/)}) (TimeBlock pipeline:(C {(zip)} {(-r)} {(-q)} {($ VSub_Name '$out')} {(.)})) (C {(popd)}) (C {(tree)} {(_release/VERSION)}) ] spids: [1089] ) spids: [1085 1088] ) (FuncDef name: metrics-index body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <title>Line Counts</title>\n') (' <style>\n') (' body {\n') (' margin: 0 auto;\n') (' width: 40em;\n') (' }\n') (' #home-link {\n') (' text-align: right;\n') (' }\n') (' </style>\n') (' </head>\n') (' <body>\n') (' <p id=') (Right_DoubleQuote '"') (home-link) (Right_DoubleQuote '"') ('>\n') (' <a href=') (Right_DoubleQuote '"') (/) (Right_DoubleQuote '"') ('>oilshell.org</a>\n') (' </p>\n') (' <h3>Line Counts</h3>\n') (' <p>\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [1285] ) ] ) (C {(find)} {($ VSub_Name '$out')} {(-name)} {(SQ <'*.txt'>)} {(-a)} {(-printf)} {(SQ <'<a href="%P">%P</a> <br/>'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ (' </p>\n') (' </body>\n') ('</html>\n'))} do_expansion: True here_end: EOF was_filled: True spids: [1338] ) ] ) ] spids: [1276] ) spids: [1272 1275] ) (FuncDef name: line-counts body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(_tmp/metrics/line-counts)} spids: [1357] ) ] spids: [1355] ) (C {(mkdir)} {(-p)} {($ VSub_Name '$out')}) (SimpleCommand words: [{(scripts/count.sh)} {(all)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out') (/src.txt)} spids: [1377] ) ] ) (SimpleCommand words: [{(build/metrics.sh)} {(linecount-pydeps)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out') (/pydeps.txt)} spids: [1390] ) ] ) (SimpleCommand words: [{(build/metrics.sh)} {(linecount-nativedeps)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out') (/nativedeps.txt)} spids: [1400] ) ] ) (SimpleCommand words: [{(metrics-index)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out') (/index.html)} spids: [1409] ) ] ) (C {(tree)} {($ VSub_Name '$out')}) ] spids: [1352] ) spids: [1348 1351] ) (FuncDef name: _copy-path body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:src) op: Equal rhs: {($ VSub_Number '$1')} spids: [1431] ) (assign_pair lhs: (LhsName name:dest) op: Equal rhs: {($ VSub_Number '$2')} spids: [1434] ) ] spids: [1429] ) (C {(mkdir)} {(-p)} { (CommandSubPart command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name '$dest')})]) left_token: <Left_CommandSub '$('> spids: [1442 1446] ) } ) (C {(cp)} {(-v)} {($ VSub_Name '$src')} {($ VSub_Name '$dest')}) ] spids: [1426] ) spids: [1422 1425] ) (FuncDef name: copy-web body: (BraceGroup children: [ (Pipeline children: [ (C {(find)} {(web)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(_tmp)} {(-a)} {(-prune)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(-o)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(SQ <'*.css'>)} {(-o)} {(-name)} {(SQ <'*.js'>)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(-a)} {(-printf)} {(SQ <'%p _release/VERSION/%p\\n'>)} ) (C {(xargs)} {(-n)} {(2)} {(--)} {($ VSub_Number '$0')} {(_copy-path)}) ] negated: False ) ] spids: [1464] ) spids: [1460 1463] ) (FuncDef name: build-tree body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:root) op: Equal rhs: {(_release/VERSION)} spids: [1561] ) ] spids: [1559] ) (C {(mkdir)} {(-p)} (BracedWordTree parts: [ ($ VSub_Name '$root') (/) (BracedAltPart words:[{(doc)}{(test)}{(benchmarks)}{(metrics)}]) ] ) ) (C {(cp)} {(-v)} {(_build/release-date.txt)} {(oil-version.txt)} {($ VSub_Name '$root')}) (C {(build/doc.sh)} {(osh-quick-ref)} {(_release/VERSION)}) (C {(build/doc.sh)} {(install)}) (C {(build/doc.sh)} {(release-index)} {($ VSub_Name '$root') (/index.html)}) (C {(copy-web)}) (C {(tree)} {($ VSub_Name '$root')}) ] spids: [1556] ) spids: [1552 1555] ) (FuncDef name: deploy-doc body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:deploy_repo) op: Equal rhs: {(SQ <../oilshell.org__deploy>)} spids: [1671] ) ] spids: [1669] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:release_root_dir) op: Equal rhs: {(DQ ($ VSub_Name '$deploy_repo') (/release))} spids: [1679] ) ] spids: [1677] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:release_dir) op: Equal rhs: {(DQ ($ VSub_Name '$release_root_dir') (/) ($ VSub_Name '$OIL_VERSION'))} spids: [1688] ) ] spids: [1686] ) (C {(cp)} {(-v)} {(-r)} {(--force)} {(--no-target-directory)} {(_release/VERSION/)} {($ VSub_Name '$release_dir') (/)} ) (C {(html-index)} {($ VSub_Name '$release_root_dir')} {(_tmp/releases.html)}) (C {(cp)} {(-v)} {(_tmp/releases.html)} {($ VSub_Name '$deploy_repo')}) (C {(tree)} {(-L)} {(3)} {($ VSub_Name '$release_root_dir')}) (C {(ls)} {(-l)} {($ VSub_Name '$deploy_repo') (/releases.html)}) ] spids: [1666] ) spids: [1662 1665] ) (FuncDef name: deploy-tar body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:download_dir) op: Equal rhs: {(SQ <../oilshell.org__deploy/download/>)} spids: [1776] ) ] spids: [1774] ) (C {(mkdir)} {(-p)} {($ VSub_Name '$download_dir')}) (C {(cp)} {(-v)} {(_release/oil-) ($ VSub_Name '$OIL_VERSION') (.tar.) (Lit_Other '*')} {($ VSub_Name '$download_dir')} ) (C {(ls)} {(-l)} {($ VSub_Name '$download_dir')}) ] spids: [1771] ) spids: [1767 1770] ) (FuncDef name: _release-files-html body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: {($ VSub_Number '$1')} spids: [1859] ) ] spids: [1857] ) (C {(echo)} {(SQ <'<table class="file-table">'>)}) (C {(echo)} { (SQ < '<tr><thead> <td>File</td> <td>Size</td> <td>SHA256 Checksum</td> </thead></tr>' > ) } ) (ForEach iter_name: name iter_words: [ (BracedWordTree parts: [(oil-) ($ VSub_Name '$version') (.tar.) (BracedAltPart words:[{(xz)}{(gz)}])] ) ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ (download/) ($ VSub_Name '$name'))} spids: [1900] ) ] spids: [1898] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: {(../oilshell.org__deploy/download/) ($ VSub_Name '$name')} spids: [1912] ) ] spids: [1910] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:checksum) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(sha256sum)} {($ VSub_Name '$path')}) (C {(awk)} {(SQ <'{print $1}'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [1920 1932] ) } spids: [1919] ) ] spids: [1917] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:size) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(stat)} {(--format)} {(SQ <'%s'>)} {($ VSub_Name '$path')}) ] ) left_token: <Left_CommandSub '$('> spids: [1938 1948] ) } spids: [1937] ) ] spids: [1935] ) (C {(echo)} {(SQ <'<tr> <td class="filename"><a href="'>) ($ VSub_Name '$url') (SQ <'">'>) ($ VSub_Name '$name') (SQ <'</a></td>\n'> <' <td class="size">'>) ($ VSub_Name '$size') (SQ <'</td>\n'> <' <td class="checksum">'>) ($ VSub_Name '$checksum') (SQ <'</td>\n'> <' </tr>'>) } ) ] spids: [1895 1983] ) spids: [1884 1893] ) (C {(echo)} {(SQ <'</table>'>)}) ] spids: [1854] ) spids: [1850 1853] ) (FuncDef name: _html-index body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:release_root_dir) op: Equal rhs: {($ VSub_Number '$1')} spids: [2059] ) ] spids: [2057] ) (ForEach iter_name: entry iter_words: [{($ VSub_Name '$release_root_dir') (/) (Lit_Other '*')}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(C {(test)} {(-d)} {($ VSub_Name '$entry')})] negated: True ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Continue continue>)] spids: [-1 2092] ) ] spids: [-1 2098] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Name '$entry')} spids: [2103] ) ] spids: [2101] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:version) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(head)} {(-n)} {(1)} {($ VSub_Name '$dir') (/oil-version.txt)}) ] ) left_token: <Left_CommandSub '$('> spids: [2111 2120] ) } spids: [2110] ) ] spids: [2108] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:release_date) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(head)} {(-n)} {(1)} {($ VSub_Name '$dir') (/release-date.txt)}) ] ) left_token: <Left_CommandSub '$('> spids: [2126 2135] ) } spids: [2125] ) ] spids: [2123] ) (C {(log)} {(DQ ('-- ') ($ VSub_Name '$dir'))}) (C {(log)} {(DQ ('Version: ') ($ VSub_Name '$version'))}) (C {(log)} {(DQ ('Release Date: ') ($ VSub_Name '$release_date'))}) (C {(log)} {(DQ )}) (C {(echo)} {(DQ ($ VSub_Name '$release_date') (' ') ($ VSub_Name '$version'))}) ] spids: [2078 2179] ) redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/release-meta.txt)} spids: [2181] ) ] spids: [2072 2076] ) (SimpleCommand words: [{(sort)} {(-r)} {(_tmp/release-meta.txt)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(_tmp/sorted-releases.txt)} spids: [2197] ) ] ) (While cond: [(Sentence child:(C {(read)} {(date)} {(_)} {(version)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(log)} {(DQ ('Release Date: ') ($ VSub_Name '$date'))}) (C {(log)} {(DQ ('Version: ') ($ VSub_Name '$version'))}) (C {(echo)} {(SQ <'<a name="'>) ($ VSub_Name '$version') (SQ <'"></a>'>)}) (C {(echo)} {(DQ ('<h2>Version ') ($ VSub_Name '$version') ('</h2>'))}) (C {(echo)} {(DQ ('<p class=')) (date) (DQ ('>') ($ VSub_Name '$date') ('</p>'))}) (C {(echo)} {(SQ <'<p> <a href="release/'>) ($ VSub_Name '$version') (SQ <'/announcement.html">Release Announcment</a>\n'> <' | <a href="release/'> ) ($ VSub_Name '$version') (SQ <'/doc/INSTALL.html">INSTALL</a>\n'> <' | <a href="release/'> ) ($ VSub_Name '$version') (SQ <'/">Docs and Details</a>\n'> <' </p>'>) } ) (C {(_release-files-html)} {($ VSub_Name '$version')}) ] spids: [2214 2305] ) redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(_tmp/sorted-releases.txt)} spids: [2307] ) ] ) ] spids: [2054] ) spids: [2050 2053] ) (FuncDef name: _releases-html-header body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <title>Oil Releases</title>\n') (' <style>\n') (' /* Make it centered and skinny for readability */\n') (' body {\n') (' margin: 0 auto;\n') (' width: 60em;\n') (' }\n') (' h1 {\n') (' text-align: center;\n') (' }\n') (' thead {\n') (' font-weight: bold;\n') (' }\n') (' /* Style for checksum, file size, etc. */\n') ('\n') (' .file-table {\n') (' width: 100%;\n') (' }\n') ('\n') (' .filename {\n') (' font-family: monospace;\n') (' }\n') ('\n') (' .size {\n') (' }\n') (' .checksum {\n') (' font-family: monospace;\n') (' color: #555;\n') (' }\n') ('\n') (' /* Copied from oilshell.org bundle.css */\n') (' .date {\n') (' font-size: medium;\n') (' color: #555;\n') (' padding-left: 1em;\n') (' }\n') (' #home-link {\n') (' text-align: right;\n') (' }\n') (' </style>\n') (' </head>\n') (' <body>\n') (' <p id=') (Right_DoubleQuote '"') (home-link) (Right_DoubleQuote '"') ('>\n') (' <a href=') (Right_DoubleQuote '"') (/) (Right_DoubleQuote '"') ('>oilshell.org</a>\n') (' </p>\n') (' <h1>Oil Releases</h1>\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [2323] ) ] ) ] spids: [2318] ) spids: [2314 2317] ) (FuncDef name: _html-footer body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ (' </body>\n') ('</html>\n'))} do_expansion: True here_end: EOF was_filled: True spids: [2396] ) ] ) ] spids: [2391] ) spids: [2387 2390] ) (FuncDef name: html-index body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:release_root_dir) op: Equal rhs: {($ VSub_Number '$1')} spids: [2414] ) ] spids: [2412] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(_tmp) (Lit_Slash /) (releases.html)} ) spids: [2421 2427] ) } spids: [2420] ) ] spids: [2418] ) (BraceGroup children: [ (C {(_releases-html-header)}) (C {(_html-index)} {($ VSub_Name '$release_root_dir')}) (C {(_html-footer)}) ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$out')} spids: [2446] ) ] spids: [2431] ) (C {(ls)} {(-l)} {($ VSub_Name '$out')}) ] spids: [2409] ) spids: [2405 2408] ) (C {(DQ ($ VSub_At '$@'))}) ] )