(command.CommandList children: [ (C {(set)} {(-o)} {(nounset)}) (C {(set)} {(-o)} {(pipefail)}) (C {(set)} {(-o)} {(errexit)}) (command.Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OIL_VERSION) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(head)} {(-n)} {(1)} {(oil-version.txt)})] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OSH_RELEASE_BINARY) op: Equal rhs: {(_tmp/oil-tar-test/oil-) ($ VSub_DollarName '$OIL_VERSION') (/_bin/osh)} ) ] ) (command.FuncDef name: log body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(echo)} {(DQ ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) ] ) ) (command.FuncDef name: _clean-tmp-dirs body: (command.BraceGroup children: [ (C {(rm)} {(-r)} {(-f)} (word.BracedWordTree parts: [ (_tmp/) (word_part.BracedTuple words: [{(spec)} {(wild)} {(unit)} {(gold)} {(osh2oil)}] ) ] ) (word.BracedWordTree parts: [ (_tmp/) (word_part.BracedTuple words: [{(osh-parser)} {(osh-runtime)} {(vm-baseline)} {(ovm-build)} {(oheap)}] ) ] ) {(_tmp/metrics)} {(_tmp/oil-tar-test)} ) ] ) ) (command.FuncDef name: _clean body: (command.BraceGroup children: [ (C {(_clean-tmp-dirs)}) (C {(rm)} {(-r)} {(-f)} {(_devbuild)}) (C {(build/actions.sh)} {(clean-repo)}) ] ) ) (command.FuncDef name: _dev-build body: (command.BraceGroup children:[(C {(build/dev.sh)} {(all)})]) ) (command.FuncDef name: _release-build body: (command.BraceGroup children: [ (C {(build/prepare.sh)} {(configure)}) (C {(build/prepare.sh)} {(build-python)}) (C {($ VSub_Number '$0')} {(oil)}) (C {(build/test.sh)} {(oil-tar)}) (C {(ln)} {(-s)} {(-f)} {(--no-target-directory)} {(-v)} {(oil.ovm)} {($ VSub_DollarName '$OSH_RELEASE_BINARY')} ) ] ) ) (command.FuncDef name: _test-release-build body: (command.BraceGroup children: [ (C {(test/alpine.sh)} {(copy-tar)} {(SQ )} {(oil)}) (C {(test/alpine.sh)} {(test-tar)} {(SQ )} {(oil)}) (C {(test/spec.sh)} {(link-busybox-ash)}) (C {(test/spec.sh)} {(smoke)}) (C {(test/osh2oil.sh)} {(run-for-release)}) (C {(test/gold.sh)} {(run-for-release)}) (command.SimpleCommand words: [{(test/spec.sh)} {(all)}] more_env: [(env_pair name:OSH_OVM val:{($ VSub_DollarName '$OSH_RELEASE_BINARY')})] ) ] ) ) (command.FuncDef name: build-and-test body: (command.BraceGroup children: [ (C {(_clean)}) (C {(_dev-build)}) (C {(test/unit.sh)} {(run-for-release)}) (C {(_release-build)}) (C {(_test-release-build)}) ] ) ) (command.FuncDef name: _install body: (command.BraceGroup children: [ (C {(test/spec.sh)} {(install-shells)}) (C {(sudo)} {(apt)} {(install)} {(python-dev)}) ] ) ) (command.FuncDef name: benchmark-build body: (command.BraceGroup children: [(C {(_install)}) (C {(_clean)}) (C {(_dev-build)}) (C {(_release-build)})] ) ) (command.FuncDef name: benchmark-run body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(benchmarks/auto.sh)} {(all)}] more_env: [(env_pair name:OSH_OVM val:{($ VSub_DollarName '$OSH_RELEASE_BINARY')})] ) ] ) ) (command.FuncDef name: benchmark-run-on-1-machine body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(benchmarks/oheap.sh)} {(measure)}] more_env: [(env_pair name:OSH_OVM val:{($ VSub_DollarName '$OSH_RELEASE_BINARY')})] ) ] ) ) (command.FuncDef name: _compressed-tarball body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:name) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(hello)}) ) } ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:version) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 2> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(0.0.0)}) ) } ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:in) op: Equal rhs: {(_release/) ($ VSub_DollarName '$name') (.tar)} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(_release/) ($ VSub_DollarName '$name') (-) ($ VSub_DollarName '$version') (.tar.gz) } ) ] ) (C {(build/actions.sh)} {(write-release-date)}) (C {(make)} {($ VSub_DollarName '$in')}) (command.TimeBlock pipeline: (command.SimpleCommand words: [{(gzip)} {(-c)} {($ VSub_DollarName '$in')}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out')} ) ] ) ) (C {(ls)} {(-l)} {($ VSub_DollarName '$out')}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out2) op: Equal rhs: {(_release/) ($ VSub_DollarName '$name') (-) ($ VSub_DollarName '$version') (.tar.xz) } ) ] ) (command.TimeBlock pipeline: (command.SimpleCommand words: [{(xz)} {(-c)} {($ VSub_DollarName '$in')}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out2')} ) ] ) ) (C {(ls)} {(-l)} {($ VSub_DollarName '$out2')}) ] ) ) (command.FuncDef name: oil body: (command.BraceGroup children: [(C {(_compressed-tarball)} {(oil)} {($ VSub_DollarName '$OIL_VERSION')})] ) ) (command.FuncDef name: hello body: (command.BraceGroup children: [ (C {(_compressed-tarball)} {(hello)} { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(head)} {(-n)} {(1)} {(build/testdata/hello-version.txt)})] ) left_token: <Left_DollarParen '$('> ) } ) ] ) ) (command.FuncDef name: escape-segments body: (command.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'> ) } ) ] ) ) (command.FuncDef name: _git-changelog-body body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prev_branch) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur_branch) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.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>'> ) } ) ] ) (command.Pipeline children: [ (C {(git)} {(log)} {($ VSub_DollarName '$prev_branch') (..) ($ VSub_DollarName '$cur_branch')} {(--reverse)} {(--pretty) (Lit_Other '=') (DQ ('format:') ($ VSub_DollarName '$format'))} {(--date) (Lit_Other '=') (short)} ) (C {(escape-segments)}) ] negated: F ) ] ) ) (command.FuncDef name: _git-changelog-header body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prev_branch) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur_branch) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1065 stdin_parts: [ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <title>Commits Between ') ($ VSub_DollarName '$prev_branch') (' and ') ($ VSub_DollarName '$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_DollarName '$prev_branch') ('</code> and\n') (' <code>') ($ VSub_DollarName '$cur_branch') ('</code></h3>\n') (' <table>\n') ] ) ] ) ] ) ) (command.FuncDef name: _git-changelog body: (command.BraceGroup children: [ (C {(_git-changelog-header)} {(DQ ($ VSub_At '$@'))}) (C {(_git-changelog-body)} {(DQ ($ VSub_At '$@'))}) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1121 stdin_parts: [(' </table>\n')] ) ] ) (C {(_html-footer)}) ] ) ) (command.FuncDef name: git-changelog-0.1 body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:version) op:Equal rhs:{(SQ <0.1.0>)})] ) (command.SimpleCommand words: [{(_git-changelog)} {(release/0.0.0)} {(release/0.1.0)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(../oilshell.org__deploy/release/) ($ VSub_DollarName '$version') (/changelog.html) } ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.2.alpha1 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.1.0)} {(release/0.2.alpha1)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.2.0 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.1.0)} {(release/0.2.0)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.3.alpha1 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.2.0)} {(release/0.3.alpha1)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.3.0 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.2.0)} {(release/0.3.0)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.4.0 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.3.0)} {(release/0.4.0)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.5.alpha1 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.4.0)} {(release/0.5.alpha1)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.5.alpha2 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.5.alpha1)} {(release/0.5.alpha2)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: git-changelog-0.5.alpha3 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(_git-changelog)} {(release/0.5.alpha2)} {(release/0.5.alpha3)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/changelog.html)} ) ] ) ] ) ) (command.FuncDef name: html-redirect body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:url) op:Equal rhs:{($ VSub_Number '$1')})] ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1386 stdin_parts: [ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' <meta http-equiv=') (Right_DoubleQuote '"') (refresh) (Right_DoubleQuote '"') (' content=') (Right_DoubleQuote '"') ('0; url=') ($ VSub_DollarName '$url') (Right_DoubleQuote '"') (' />\n') (' </head>\n') (' <body>\n') (' <p>Redirect to<a href=') (Right_DoubleQuote '"') ($ VSub_DollarName '$url') (Right_DoubleQuote '"') ('>') ($ VSub_DollarName '$url') ('</a></p>\n') (' </body>\n') ('</html> \n') ] ) ] ) ] ) ) (command.FuncDef name: no-announcement body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 1411 stdin_parts: [ ('<!DOCTYPE html>\n') ('<html>\n') (' <head>\n') (' </head>\n') (' <body>\n') (' <p>No announcement for this release.</p>\n') (' </body>\n') ('</html> \n') ] ) ] ) ] ) ) (command.FuncDef name: write-no-announcement body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(no-announcement)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: announcement-0.0 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/07/23.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(../oilshell.org__deploy/release/0.0.0/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: announcement-0.1 body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:version) op:Equal rhs:{(SQ <0.1.0>)})] ) (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/09/09.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(../oilshell.org__deploy/release/) ($ VSub_DollarName '$version') (/announcement.html) } ) ] ) ] ) ) (command.FuncDef name: announcement-0.2 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/11/10.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: announcement-0.3 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2017/12/22.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: announcement-0.4 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2018/02/03.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: announcement-0.5.alpha3 body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(html-redirect)} {(SQ </blog/2018/04/30.html>)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_release/VERSION/announcement.html)} ) ] ) ] ) ) (command.FuncDef name: _link body: (command.BraceGroup children: [(C {(ln)} {(-s)} {(-f)} {(-v)} {(--no-target-directory)} {(DQ ($ VSub_At '$@'))})] ) ) (command.FuncDef name: compress-txt body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:name) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (C {(log)} {(DQ ('--- test/') ($ VSub_DollarName '$name'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/test/) ($ VSub_DollarName '$name') (.wwz))} ) ] ) (C {(pushd)} {(_tmp/) ($ VSub_DollarName '$name')}) (command.TimeBlock pipeline: (C {(zip)} {(-r)} {(-q)} {($ VSub_DollarName '$out')} {(.)}) ) (C {(popd)}) ] ) ) (command.FuncDef name: compress body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:root) op: Equal rhs: {($ VSub_DollarName '$PWD') (/_release/VERSION/)} ) ] ) (C {(compress-txt)} {(osh2oil)}) (C {(compress-txt)} {(gold)}) (C {(log)} {(DQ ('--- test/unit'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/test/unit.wwz))} ) ] ) (C {(pushd)} {(_tmp/unit)}) (command.TimeBlock pipeline: (C {(zip)} {(-r)} {(-q)} {($ VSub_DollarName '$out')} {(.)}) ) (C {(popd)}) (C {(log)} {(DQ ('--- test/spec'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/test/spec.wwz))} ) ] ) (C {(pushd)} {(_tmp/spec)}) (command.TimeBlock pipeline: (C {(zip)} {(-r)} {(-q)} {($ VSub_DollarName '$out')} {(.)}) ) (C {(popd)}) (C {(log)} {(DQ ('--- test/wild'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/test/wild.wwz))} ) ] ) (C {(pushd)} {(_tmp/wild/www)}) (command.TimeBlock pipeline: (C {(zip)} {(-r)} {(-q)} {($ VSub_DollarName '$out')} {(.)}) ) (C {(popd)}) (C {(log)} {(DQ ('--- metrics'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/metrics.wwz))} ) ] ) (C {(pushd)} {(_tmp/metrics)}) (command.TimeBlock pipeline: (C {(zip)} {(-r)} {(-q)} {($ VSub_DollarName '$out')} {(.)}) ) (C {(popd)}) (C {(compress-benchmarks)}) (C {(tree)} {(_release/VERSION)}) ] ) ) (command.FuncDef name: compress-benchmarks body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:root) op: Equal rhs: {($ VSub_DollarName '$PWD') (/_release/VERSION/)} ) ] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$root')}) (C {(log)} {(DQ ('--- benchmarks'))}) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: {(DQ ($ VSub_DollarName '$root') (/benchmarks.wwz))} ) ] ) (C {(pushd)} {(_tmp)}) (command.Pipeline children: [ (C {(find)} (word.BracedWordTree parts: [ (osh-parser/) (word_part.BracedTuple words: [{(stage1)} {(stage2)} {(index.html)}] ) ] ) (word.BracedWordTree parts: [ (osh-runtime/) (word_part.BracedTuple words: [{(stage1)} {(stage2)} {(index.html)}] ) ] ) (word.BracedWordTree parts: [ (vm-baseline/) (word_part.BracedTuple words: [{(stage1)} {(stage2)} {(index.html)}] ) ] ) (word.BracedWordTree parts: [ (ovm-build/) (word_part.BracedTuple words: [{(stage1)} {(stage2)} {(index.html)}] ) ] ) (word.BracedWordTree parts: [ (oheap/) (word_part.BracedTuple words: [{(stage1)} {(stage2)} {(index.html)}] ) ] ) {(-type)} {(f)} ) (C {(xargs)} {(--verbose)} {(--)} {(zip)} {(-q)} {($ VSub_DollarName '$out')}) ] negated: F ) (C {(popd)}) ] ) ) (command.FuncDef name: line-counts body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:out) op:Equal rhs:{($ VSub_Number '$1')})] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$out')}) (command.SimpleCommand words: [{(build/metrics.sh)} {(linecount-pydeps)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/pydeps.txt)} ) ] ) (command.SimpleCommand words: [{(build/metrics.sh)} {(linecount-nativedeps)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/nativedeps.txt)} ) ] ) (command.SimpleCommand words: [{(scripts/count.sh)} {(all)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/src.txt)} ) ] ) (command.SimpleCommand words: [{(scripts/count.sh)} {(parser)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/parser.txt)} ) ] ) (command.SimpleCommand words: [{(scripts/count.sh)} {(runtime)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/runtime.txt)} ) ] ) (command.SimpleCommand words: [{(scripts/count.sh)} {(oil-osh-cloc)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/oil-osh-cloc.txt)} ) ] ) ] ) ) (command.FuncDef name: metrics body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:out) op:Equal rhs:{(_tmp/metrics)})] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$out')}) (command.SimpleCommand words: [{(build/metrics.sh)} {(pyc-bytes)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out') (/pyc-bytes.txt)} ) ] ) (C {(line-counts)} {($ VSub_DollarName '$out') (/line-counts)}) (C {(tree)} {($ VSub_DollarName '$out')}) ] ) ) (command.FuncDef name: _copy-path body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:src) op: Equal rhs: {($ VSub_Number '$1')} ) (assign_pair lhs: (lhs_expr.LhsName name:dest) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (C {(mkdir)} {(-p)} { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(dirname)} {($ VSub_DollarName '$dest')})] ) left_token: <Left_DollarParen '$('> ) } ) (C {(cp)} {(-v)} {($ VSub_DollarName '$src')} {($ VSub_DollarName '$dest')}) ] ) ) (command.FuncDef name: copy-web body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(find)} {(web)} {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(_tmp)} {(-a)} {(-prune)} {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(-o)} {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(SQ <'*.css'>)} {(-o)} {(-name)} {(SQ <'*.js'>)} {(word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} {(-a)} {(-printf)} {(SQ <'%p _release/VERSION/%p\\n'>)} ) (C {(xargs)} {(-n)} {(2)} {(--)} {($ VSub_Number '$0')} {(_copy-path)}) ] negated: F ) ] ) ) (command.FuncDef name: build-tree body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(lhs_expr.LhsName name:root) op:Equal rhs:{(_release/VERSION)})] ) (C {(mkdir)} {(-p)} (word.BracedWordTree parts: [ ($ VSub_DollarName '$root') (/) (word_part.BracedTuple words:[{(doc)} {(test)}]) ] ) ) (C {(cp)} {(-v)} {(_build/release-date.txt)} {(oil-version.txt)} {($ VSub_DollarName '$root')}) (C {(build/doc.sh)} {(osh-quick-ref)} {(_release/VERSION)}) (C {(build/doc.sh)} {(install)}) (C {(build/doc.sh)} {(release-index)} {($ VSub_DollarName '$root') (/index.html)}) (C {(copy-web)}) (C {(tree)} {($ VSub_DollarName '$root')}) ] ) ) (command.FuncDef name: deploy-doc body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:deploy_repo) op: Equal rhs: {(SQ <../oilshell.org__deploy>)} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:release_root_dir) op: Equal rhs: {(DQ ($ VSub_DollarName '$deploy_repo') (/release))} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:release_dir) op: Equal rhs: { (DQ ($ VSub_DollarName '$release_root_dir') (/) ($ VSub_DollarName '$OIL_VERSION') ) } ) ] ) (C {(cp)} {(-v)} {(-r)} {(--force)} {(--no-target-directory)} {(_release/VERSION/)} {($ VSub_DollarName '$release_dir') (/)} ) (C {(html-index)} {($ VSub_DollarName '$release_root_dir')} {(_tmp/releases.html)}) (C {(cp)} {(-v)} {(_tmp/releases.html)} {($ VSub_DollarName '$deploy_repo')}) (C {(tree)} {(-L)} {(3)} {($ VSub_DollarName '$release_root_dir')}) (C {(ls)} {(-l)} {($ VSub_DollarName '$deploy_repo') (/releases.html)}) ] ) ) (command.FuncDef name: deploy-tar body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:download_dir) op: Equal rhs: {(SQ <../oilshell.org__deploy/download/>)} ) ] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$download_dir')}) (C {(cp)} {(-v)} {(_release/oil-) ($ VSub_DollarName '$OIL_VERSION') (.tar.) (Lit_Other '*')} {($ VSub_DollarName '$download_dir')} ) (C {(ls)} {(-l)} {($ VSub_DollarName '$download_dir')}) ] ) ) (command.FuncDef name: _release-files-html body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:version) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (C {(echo)} {(SQ <'<table class="file-table">'>)}) (C {(echo)} { (SQ <'<tr><thead> <td>File</td> <td>Size</td> <td>SHA256 Checksum</td> </thead></tr>'> ) } ) (command.ForEach iter_name: name iter_words: [ (word.BracedWordTree parts: [ (oil-) ($ VSub_DollarName '$version') (.tar.) (word_part.BracedTuple words:[{(xz)} {(gz)}]) ] ) ] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:url) op: Equal rhs: {(DQ (download/) ($ VSub_DollarName '$name'))} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:path) op: Equal rhs: {(../oilshell.org__deploy/download/) ($ VSub_DollarName '$name')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:checksum) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(sha256sum)} {($ VSub_DollarName '$path')}) (C {(awk)} {(SQ <'{print $1}'>)}) ] negated: F ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:size) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(stat)} {(--format)} {(SQ <'%s'>)} {($ VSub_DollarName '$path')} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (C {(echo)} {(SQ <'<tr> <td class="filename"><a href="'>) ($ VSub_DollarName '$url') (SQ <'">'>) ($ VSub_DollarName '$name') (SQ <'</a></td>\n'> <' <td class="size">'>) ($ VSub_DollarName '$size') (SQ <'</td>\n'> <' <td class="checksum">'>) ($ VSub_DollarName '$checksum') (SQ <'</td>\n'> <' </tr>'>) } ) ] ) ) (C {(echo)} {(SQ <'</table>'>)}) ] ) ) (command.FuncDef name: _html-index body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:release_root_dir) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.ForEach iter_name: entry iter_words: [{($ VSub_DollarName '$release_root_dir') (/) (Lit_Other '*')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [(C {(test)} {(-d)} {($ VSub_DollarName '$entry')})] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Continue continue>)] ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dir) op: Equal rhs: {($ VSub_DollarName '$entry')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:version) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(head)} {(-n)} {(1)} {($ VSub_DollarName '$dir') (/oil-version.txt)} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:release_date) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(head)} {(-n)} {(1)} {($ VSub_DollarName '$dir') (/release-date.txt)} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (C {(log)} {(DQ ('-- ') ($ VSub_DollarName '$dir'))}) (C {(log)} {(DQ ('Version: ') ($ VSub_DollarName '$version'))}) (C {(log)} {(DQ ('Release Date: ') ($ VSub_DollarName '$release_date'))}) (C {(log)} {(DQ )}) (C {(echo)} {(DQ ($ VSub_DollarName '$release_date') (' ') ($ VSub_DollarName '$version'))} ) ] ) redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_tmp/release-meta.txt)} ) ] ) (command.SimpleCommand words: [{(sort)} {(-r)} {(_tmp/release-meta.txt)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(_tmp/sorted-releases.txt)} ) ] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(read)} {(date)} {(_)} {(version)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (C {(log)} {(DQ ('Release Date: ') ($ VSub_DollarName '$date'))}) (C {(log)} {(DQ ('Version: ') ($ VSub_DollarName '$version'))}) (C {(echo)} {(SQ <'<a name="'>) ($ VSub_DollarName '$version') (SQ <'"></a>'>)}) (C {(echo)} {(DQ ('<h2>Version ') ($ VSub_DollarName '$version') ('</h2>'))}) (C {(echo)} {(DQ ('<p class=')) (date) (DQ ('>') ($ VSub_DollarName '$date') ('</p>'))} ) (C {(echo)} {(SQ <'<p> <a href="release/'>) ($ VSub_DollarName '$version') (SQ <'/announcement.html">Release Announcement</a>\n'> <' | <a href="release/'> ) ($ VSub_DollarName '$version') (SQ <'/doc/INSTALL.html">INSTALL</a>\n'> <' | <a href="release/'> ) ($ VSub_DollarName '$version') (SQ <'/">Docs and Details</a>\n'> <' </p>'>) } ) (C {(_release-files-html)} {($ VSub_DollarName '$version')}) ] ) redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(_tmp/sorted-releases.txt)} ) ] ) ] ) ) (command.FuncDef name: _releases-html-header body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 3100 stdin_parts: [ ('<!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') ] ) ] ) ] ) ) (command.FuncDef name: _html-footer body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 3119 stdin_parts: [(' </body>\n') ('</html>\n')] ) ] ) ] ) ) (command.FuncDef name: html-index body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:release_root_dir) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:out) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Number 2> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonHyphen arg_word: {(_tmp) (Lit_Slash /) (releases.html)} ) ) } ) ] ) (command.BraceGroup children: [ (C {(_releases-html-header)}) (C {(_html-index)} {($ VSub_DollarName '$release_root_dir')}) (C {(_html-footer)}) ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$out')} ) ] ) (C {(ls)} {(-l)} {($ VSub_DollarName '$out')}) ] ) ) (C {(DQ ($ VSub_At '$@'))}) ] )