(List (Com {[LIT_CHARS set]} {[LIT_CHARS -eu]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS help]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Usage:\n"][VarSub 0][LIT_CHARS " [port]\n"][LIT_CHARS " Builds docs and starts a web server serving docs on localhost:port\n"][LIT_CHARS " Default port is 12345.\n"][VarSub 0][LIT_CHARS " []\n"][LIT_CHARS " Builds docs as static web pages in .\n"][LIT_CHARS " Replaces absolute paths in the resulting HTML with ,\n"][LIT_CHARS " or, if it is not specified, with .\n"]]} 0), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "["] [LIT_CHARS 0-9] [LIT_OTHER "]"] [LIT_OTHER "*"]}}) (List (= scope= flags=2 words=[] bindings=[('PORT', {[VarSub 1]})]) (= scope= flags=2 words=[] bindings=[('TARGET', {[SQ ]})]) ) (ElseTrue) (List (= scope= flags=2 words=[] bindings=[('PORT', {[VarSub 1 test_op=VS_TEST_HYPHEN {[LIT_CHARS 12345]}]})]) (= scope= flags=2 words=[] bindings=[('TARGET', {[VarSub 1 test_op=VS_TEST_HYPHEN {}]})]) ) ) (= scope= flags=2 words=[] bindings=[('WORKING_DIR', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]})]})]) (= scope= flags=2 words=[] bindings=[('SERVING_PREFIX', {[VarSub 2 test_op=VS_TEST_HYPHEN {[VarSub TARGET]}]})]) (FunctionDef check [] (AndOr OP_OR_IF (Com {[LIT_CHARS which]} {[VarSub 1]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Subshell (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 1][LIT_CHARS " not installed. Please install "][VarSub 1][LIT_CHARS .]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef build_and_serve [] (List (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //site] [LIT_OTHER ":"] [LIT_CHARS jekyll-tree.tar]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub WORKING_DIR] [LIT_CHARS /] [LIT_OTHER "*"]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -xf]} {[LIT_CHARS bazel-genfiles/site/jekyll-tree.tar]} {[LIT_CHARS -C]} {[VarSub WORKING_DIR]}) (AndOr OP_OR_IF (Com {[LIT_CHARS pkill]} {[LIT_CHARS -9]} {[LIT_CHARS jekyll]}) (Com {[LIT_CHARS true]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub TARGET]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Serving bazel.build site at port "][VarSub PORT]]}) (Com {[LIT_CHARS jekyll]} {[LIT_CHARS serve]} {[LIT_CHARS --detach]} {[LIT_CHARS --quiet]} {[LIT_CHARS --port]} {[VarSub PORT]} {[LIT_CHARS --source]} {[VarSub WORKING_DIR]}) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('TMP_TARGET', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]})]})]) (Com {[LIT_CHARS jekyll]} {[LIT_CHARS build]} {[LIT_CHARS --source]} {[VarSub WORKING_DIR]} {[LIT_CHARS --destination]} {[DQ [VarSub TMP_TARGET]]}) (= scope= flags=0 words=[] bindings=[('REPLACEMENT', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub SERVING_PREFIX]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS s/] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //] [\ LIT_ESCAPED_CHAR "\\\\"] [\ LIT_ESCAPED_CHAR "\\\\"] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //g]}) )]})]) (Pipeline (Com {[LIT_CHARS find]} {[VarSub TMP_TARGET]} {[LIT_CHARS -name]} {[SQ ]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS s/href] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\\"] [\ LIT_ESCAPED_CHAR "\\\""] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //href] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\""] [VarSub REPLACEMENT] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //g]}) ) (Pipeline (Com {[LIT_CHARS find]} {[VarSub TMP_TARGET]} {[LIT_CHARS -name]} {[SQ ]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS s/src] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\\"] [\ LIT_ESCAPED_CHAR "\\\""] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //src] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\""] [VarSub REPLACEMENT] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS //g]}) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[VarSub TMP_TARGET] [LIT_CHARS /] [LIT_OTHER "*"]} {[VarSub TARGET]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Static pages copied to "][VarSub TARGET]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Should be served from "][VarSub SERVING_PREFIX]]}) ) ) ) ) (FunctionDef main [] (List (Com {[LIT_CHARS check]} {[LIT_CHARS jekyll]}) (= scope= flags=0 words=[] bindings=[('old_version', {[DQ [LIT_CHARS "Jekyll 0.11.2"]]})]) (If (Com {[LIT_CHARS expr]} {[LIT_CHARS match]} {[DQ [ComSub (Com {[LIT_CHARS jekyll]} {[LIT_CHARS --version]})]]} {[DQ [VarSub old_version]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: Running with an old version of Jekyll, update "]]} {[DQ [LIT_CHARS "to 2.5.3 with "][\ LIT_ESCAPED_CHAR "\\`"][LIT_CHARS "sudo gem install jekyll -v 2.5.3"][\ LIT_ESCAPED_CHAR "\\`"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS build_and_serve]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Type q to quit, r to rebuild docs and restart jekyll"]]}) (While (Com {[LIT_CHARS true]}) (List (Com {[LIT_CHARS read]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[LIT_CHARS -s]} {[LIT_CHARS user_input]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub user_input]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS q]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS Quitting]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub user_input]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS r]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Rebuilding docs and restarting jekyll"]]}) (Com {[LIT_CHARS build_and_serve]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Rebuilt docs and restarted jekyll"]]}) ) ) ) ) ) ) (FunctionDef cleanup [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub WORKING_DIR]}) (Com {[LIT_CHARS pkill]} {[LIT_CHARS -9]} {[LIT_CHARS jekyll]}) ) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS cleanup]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS main]}) )