(List (Com {[LIT_CHARS set]} {[LIT_CHARS -eu]}) (= scope= flags=0 words=[] bindings=[('SCRIPT_DIR', {[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]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]})]) (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub SCRIPT_DIR]})] [LIT_CHARS /release/common.sh]}) (Com {[LIT_OTHER ":"]} {[VarSub GIT_REPOSITORY_URL test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS "https:"] [LIT_SLASH /] [LIT_SLASH /] [LIT_CHARS github.com] [LIT_SLASH /] [LIT_CHARS bazelbuild] [LIT_SLASH /] [LIT_CHARS bazel]}]}) (Com {[LIT_OTHER ":"]} {[VarSub GCS_BASE_URL test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS "https:"] [LIT_SLASH /] [LIT_SLASH /] [LIT_CHARS storage.googleapis.com]}]}) (Com {[LIT_OTHER ":"]} {[VarSub GCS_BUCKET test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS bucket-o-bazel]}]}) (Com {[LIT_OTHER ":"]} {[VarSub GCS_APT_BUCKET test_op=VS_TEST_COLON_EQUALS {[LIT_CHARS bazel-apt]}]}) (Com {[LIT_OTHER ":"]} {[VarSub EMAIL_TEMPLATE_RC test_op=VS_TEST_COLON_EQUALS {[VarSub SCRIPT_DIR] [LIT_SLASH /] [LIT_CHARS rc_email.txt]}]}) (Com {[LIT_OTHER ":"]} {[VarSub EMAIL_TEMPLATE_RELEASE test_op=VS_TEST_COLON_EQUALS {[VarSub SCRIPT_DIR] [LIT_SLASH /] [LIT_CHARS release_email.txt]}]}) (Com {[LIT_OTHER ":"]} {[VarSub RELEASE_CANDIDATE_URL test_op=VS_TEST_COLON_EQUALS {[DQ [VarSub GCS_BASE_URL][LIT_CHARS /][VarSub GCS_BUCKET][LIT_CHARS "/%release_name%/rc%rc%/index.html"]]}]}) (Com {[LIT_OTHER ":"]} {[VarSub RELEASE_URL test_op=VS_TEST_EQUALS {[DQ [VarSub GIT_REPOSITORY_URL][LIT_CHARS "/releases/tag/%release_name%"]]}]}) (= scope= flags=0 words=[] bindings=[('PLATFORM', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub PLATFORM]} {[DQ [LIT_CHARS darwin]]}}) (FunctionDef checksum [] (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub 1]]})]]}) (Com {[LIT_CHARS shasum]} {[LIT_CHARS -a]} {[LIT_CHARS 256]} {[DQ [ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 1]]})]]}) ) ) ) (ElseTrue) (FunctionDef checksum [] (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub 1]]})]]}) (Com {[LIT_CHARS sha256sum]} {[DQ [ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 1]]})]]}) ) ) ) ) (= scope= flags=0 words=[] bindings=[('GIT_ROOT', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --show-toplevel]})]]})]) (= scope= flags=0 words=[] bindings=[('BUILD_SCRIPT_PATH', {[DQ [VarSub GIT_ROOT][LIT_CHARS /compile.sh]]})]) (FunctionDef get_full_release_name [] (List (= scope= flags=0 words=[] bindings=[('rc', {[ComSub (Com {[LIT_CHARS get_release_candidate]})]})]) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS get_release_name]})]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub rc]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub name][LIT_CHARS rc][VarSub rc]]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub name]]}) ) ) ) (FunctionDef setup_android_repositories [] (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[LIT_CHARS WORKSPACE.bak]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub ANDROID_SDK_PATH test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS cp]} {[LIT_CHARS WORKSPACE]} {[LIT_CHARS WORKSPACE.bak]}) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS echo]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} >"> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "android_sdk_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS androidsdk][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_SDK_PATH][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_tools_version = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_SDK_BUILD_TOOLS_VERSION test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 22.0.1]}][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " api_level = "][VarSub ANDROID_SDK_API_LEVEL test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 21]}][LIT_CHARS ",\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "bind(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS android_sdk_for_testing][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " actual = "][RIGHT_D_QUOTE "\""][LIT_CHARS "@androidsdk//:files"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub ANDROID_NDK_PATH test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "android_ndk_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS androidndk][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_NDK_PATH][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " api_level = "][VarSub ANDROID_NDK_API_LEVEL test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 21]}][LIT_CHARS ",\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "bind(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS android_ndk_for_testing][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " actual = "][RIGHT_D_QUOTE "\""][LIT_CHARS "@androidndk//:files"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) ) ) ) ) (FunctionDef bazel_build [] (List (= scope= flags=0 words=[] bindings=[('release_label', {[DQ [ComSub (Com {[LIT_CHARS get_full_release_name]})]]})]) (= scope= flags=0 words=[] bindings=[('embed_label_opts', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub release_label]]} {[LIT_OTHER "]"]}) (= scope= flags=1 words=[] bindings=[('EMBED_LABEL', {[DQ [VarSub release_label]]})]) ) (If (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub JAVA_VERSION test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS 1] [\ LIT_ESCAPED_CHAR "\\."] [LIT_CHARS ")"] [LIT_OTHER "?"] [LIT_CHARS 7] [LIT_OTHER "$"]}}) (List (= scope= flags=0 words=[] bindings=[('JAVA_VERSION', {[LIT_CHARS 1.7]})]) (= scope= flags=0 words=[] bindings=[('release_label', {[DQ [VarSub release_label][LIT_CHARS -jdk7]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('JAVA_VERSION', {[LIT_CHARS 1.8]})]) ) (Com {[LIT_CHARS setup_android_repositories]}) (= scope= flags=0 words=[] bindings=[('retCode', {[LIT_CHARS 0]})]) (AndOr OP_OR_IF (Com {[VarSub BUILD_SCRIPT_PATH]} {[VarSub BAZEL_COMPILE_TARGET test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS all]}]}) (= scope= flags=0 words=[] bindings=[('retCode', {[VarSub ?]})]) ) (If (DParen {A2 AS_OP_DAMP {A2 AS_OP_NEQUAL {A Atom NODE_ARITH_WORD {[VarSub retCode]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}} {A2 AS_OP_NEQUAL {A Atom NODE_ARITH_WORD {[VarSub retCode]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 3]}}}}) (Com {[LIT_CHARS exit]} {[VarSub retCode]}) ) (= scope= flags=0 words=[] bindings=[('ARGS', {[SQ ]})]) (If (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_EQUAL {[VarSub PLATFORM]} {[DQ [LIT_CHARS darwin]]}}) (Pipeline (Com {[LIT_CHARS xcodebuild]} {[LIT_CHARS -showsdks]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) ) (= scope= flags=0 words=[] bindings=[('ARGS', {[DQ [LIT_CHARS "--define IPHONE_SDK=1"]]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ./output/bazel]} {[LIT_CHARS --bazelrc] [LIT_OTHER "="] [VarSub BAZELRC test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS dev] [LIT_SLASH /] [LIT_CHARS null]}]} {[LIT_CHARS --nomaster_bazelrc]} {[LIT_CHARS build]} {[LIT_CHARS --embed_label] [LIT_OTHER "="] [VarSub release_label]} {[LIT_CHARS --stamp]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [LIT_CHARS scripts/ci/build_status_command.sh]} {[LIT_CHARS --define]} {[LIT_VAR_LIKE "JAVA_VERSION="] [VarSub JAVA_VERSION] =} {[VarSub ARGS]} {[LIT_CHARS //site] [LIT_OTHER ":"] [LIT_CHARS jekyll-tree]} {[LIT_CHARS //scripts/packages]}) (Com {[LIT_CHARS exit]} {[VarSub ?]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub 1] [LIT_CHARS /packages]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS output/bazel]} {[VarSub 1] [LIT_CHARS /bazel]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-bin/scripts/packages/install.sh]} {[VarSub 1] [LIT_CHARS /bazel-] [VarSub release_label] [LIT_CHARS -installer.sh]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub PLATFORM]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS linux]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-bin/scripts/packages/bazel-debian.deb]} {[VarSub 1] [LIT_CHARS /bazel_] [VarSub release_label] [LIT_CHARS .deb]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS -f]} {[LIT_CHARS bazel-genfiles/scripts/packages/bazel.dsc]} {[VarSub 1] [LIT_CHARS /bazel.dsc]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS -f]} {[LIT_CHARS bazel-genfiles/scripts/packages/bazel.tar.gz]} {[VarSub 1] [LIT_CHARS /bazel.tar.gz]}) ) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-genfiles/site/jekyll-tree.tar]} {[VarSub 1] [LIT_CHARS /www.bazel.build.tar]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-genfiles/scripts/packages/README.md]} {[VarSub 1] [LIT_CHARS /README.md]}) ) ) (If (DParen {A Atom NODE_ARITH_WORD {[VarSub retCode]}}) (= scope= flags=1 words=[] bindings=[('BUILD_UNSTABLE', {[LIT_CHARS 1]})]) ) ) ) (FunctionDef generate_from_template [] (List (= scope= flags=0 words=[] bindings=[('value', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (While (DParen {A2 AS_OP_GE {A Atom NODE_ARITH_WORD {[VarSub #]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}) (List (= scope= flags=0 words=[] bindings=[('value', {[DQ [VarSub value transform_ops=[PatSub {[VarSub 1]} {[VarSub 2]} do_all]]]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub value]]}) ) ) (FunctionDef generate_email [] (List (= scope= flags=0 words=[] bindings=[('release_name', {[ComSub (Com {[LIT_CHARS get_release_name]})]})]) (= scope= flags=0 words=[] bindings=[('rc', {[ComSub (Com {[LIT_CHARS get_release_candidate]})]})]) (= scope= flags=0 words=[] bindings=[('args', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "%release_name%"]]} {[DQ [VarSub release_name]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "%rc%"]]} {[DQ [VarSub rc]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "%relnotes%"]]} {[DQ [LIT_CHARS "# "][ComSub (Com {[LIT_CHARS git_commit_msg]})]]} {OP_NEWLINE "\n"}]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub rc]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('args+', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "%url%"]]} {OP_NEWLINE "\n"} {[DQ [ComSub (Com {[LIT_CHARS generate_from_template]} {[DQ [VarSub RELEASE_CANDIDATE_URL]]} {[DQ [VarSub args bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS generate_from_template]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub EMAIL_TEMPLATE_RC]})]]} {[DQ [VarSub args bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}) ) (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub release_name]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('args+', {[Array {OP_NEWLINE "\n"} {[DQ [LIT_CHARS "%url%"]]} {OP_NEWLINE "\n"} {[DQ [ComSub (Com {[LIT_CHARS generate_from_template]} {[DQ [VarSub RELEASE_URL]]} {[DQ [VarSub args bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]})]]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS generate_from_template]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub EMAIL_TEMPLATE_RELEASE]})]]} {[DQ [VarSub args bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}) ) ) ) ) (FunctionDef release_to_github [] (List (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub GIT_REPOSITORY_URL]]})]) (= scope= flags=0 words=[] bindings=[('release_name', {[ComSub (Com {[LIT_CHARS get_release_name]})]})]) (= scope= flags=0 words=[] bindings=[('rc', {[ComSub (Com {[LIT_CHARS get_release_candidate]})]})]) (= scope= flags=0 words=[] bindings=[('release_tool', {[DQ [VarSub GITHUB_RELEASE test_op=VS_TEST_COLON_HYPHEN {[ComSub (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS which]} {[LIT_CHARS github-release]}) (Com {[LIT_CHARS true]}) )]}]]})]) (= scope= flags=0 words=[] bindings=[('gpl_warning', {[DQ [LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "_Notice_: Bazel installers contain binaries licensed under the GPLv2 with\n"][LIT_CHARS "Classpath exception. Those installers should always be redistributed along with\n"][LIT_CHARS "the source code.\n"][LIT_CHARS "\n"][LIT_CHARS "_Security_: All our binaries are signed with our\n"][LIT_CHARS "[public key](https://bazel.build/bazel-release.pub.gpg) 48457EE0.\n"]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub release_tool]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please set GITHUB_RELEASE to the path to the github-release binary."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This probably means you haven't installed https://github.com/c4milo/github-release "]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "on this machine."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('github_repo', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub url]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -E]} {[SQ ]}) )]]})]) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub release_name]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub rc]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub tmpdir][LIT_CHARS /to-github]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub @]]} {[DQ [VarSub tmpdir][LIT_CHARS /to-github]]}) (Com {[DQ [VarSub GITHUB_RELEASE]]} {[DQ [VarSub github_repo]]} {[DQ [VarSub release_name]]} {[DQ ]} {[DQ [LIT_CHARS "# "][ComSub (Com {[LIT_CHARS git_commit_msg]})][LIT_CHARS " "][VarSub gpl_warning]]} {[DQ [VarSub tmpdir][LIT_CHARS /to-github/]] [SQ ]}) ) ) ) ) (FunctionDef create_index_md [] (List (= scope= flags=0 words=[] bindings=[('file', {[VarSub 1] [LIT_CHARS /__temp.md]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[VarSub 1] [LIT_CHARS /README.md]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cat]} {[VarSub 1] [LIT_CHARS /README.md]}) ) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "## Index of files"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "_Security_: All our binaries are signed with our"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[public key](https://bazel.build/bazel-release.pub.gpg) 48457EE0."]]}) (Com {[LIT_CHARS echo]}) (For f [{[VarSub 1] [LIT_CHARS /] [LIT_OTHER "*"] [LIT_CHARS .sha256]}]) (List (= scope= flags=0 words=[] bindings=[('filename', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub f]} {[LIT_CHARS .sha256]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " - ["][VarSub filename][LIT_CHARS "]("][VarSub filename][LIT_CHARS ") [[SHA-256]("][VarSub filename][LIT_CHARS ".sha256)] [[SIG]("][VarSub filename][LIT_CHARS ".sig)]"]]}) ) ) ) ) (FunctionDef create_index_html [] (List (= scope= flags=0 words=[] bindings=[('hoedown', {[DQ [VarSub HOEDOWN test_op=VS_TEST_COLON_HYPHEN {[ComSub (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS which]} {[LIT_CHARS hoedown]}) (Com {[LIT_CHARS true]}) )]}]]})]) (Pipeline (Com {[LIT_CHARS create_index_md]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -E]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[DQ [VarSub hoedown]]}) ) ) ) (FunctionDef get_gsutil [] (List (= scope= flags=0 words=[] bindings=[('gs', {[DQ [VarSub GSUTIL test_op=VS_TEST_COLON_HYPHEN {[ComSub (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS which]} {[LIT_CHARS gsutil]}) (Com {[LIT_CHARS true]}) )] [LIT_CHARS " -m"]}]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub gs]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please set GSUTIL to the path the gsutil binary."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "gsutil (https://cloud.google.com/storage/docs/gsutil/) is the"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "command-line interface to google cloud."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub gs]]}) ) ) (FunctionDef release_to_gcs [] (List (= scope= flags=0 words=[] bindings=[('gs', {[DQ [ComSub (Com {[LIT_CHARS get_gsutil]})]]})]) (= scope= flags=0 words=[] bindings=[('release_name', {[DQ [ComSub (Com {[LIT_CHARS get_release_name]})]]})]) (= scope= flags=0 words=[] bindings=[('rc', {[DQ [ComSub (Com {[LIT_CHARS get_release_candidate]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub GCS_BUCKET test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please set GCS_BUCKET to the name of your Google Cloud Storage bucket."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub release_name]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub rc]]} {[LIT_OTHER "]"]}) ) (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}] [LIT_CHARS /tmp.XXXXXXXX]})]]})]) (= scope= flags=0 words=[] bindings=[('prev_dir', {[DQ [VarSub PWD]]})]) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "{ cd "][VarSub prev_dir][LIT_CHARS "; rm -fr "][VarSub dir][LIT_CHARS "; }"]]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dir][LIT_CHARS /][VarSub release_name][LIT_CHARS /rc][VarSub rc]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub @]]} {[DQ [VarSub dir][LIT_CHARS /][VarSub release_name][LIT_CHARS /rc][VarSub rc]]}) (Com {[LIT_CHARS create_index_html]} {[DQ [VarSub dir][LIT_CHARS /][VarSub release_name][LIT_CHARS /rc][VarSub rc]]} < (FilenameRedirectNode filename={[DQ [VarSub dir][LIT_CHARS /][VarSub release_name][LIT_CHARS /rc][VarSub rc]] [LIT_CHARS /index.html]} "> 1), > ) (Com {[LIT_CHARS cd]} {[VarSub dir]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[LIT_CHARS public-read]} {[LIT_CHARS -r]} {[LIT_CHARS .]} {[DQ [LIT_CHARS "gs://"][VarSub GCS_BUCKET]]}) (Com {[LIT_CHARS cd]} {[DQ [VarSub prev_dir]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub dir]]}) (Com {[LIT_CHARS trap]} {[LIT_CHARS -]} {[LIT_CHARS EXIT]}) ) ) ) ) (FunctionDef ensure_gpg_secret_key_imported [] (AndOr OP_OR_IF (Subshell (Pipeline (Com {[LIT_CHARS gpg]} {[LIT_CHARS --list-secret-keys]}) (Com {[LIT_CHARS grep]} {[DQ [VarSub APT_GPG_KEY_ID]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (Com {[LIT_CHARS gpg]} {[LIT_CHARS --allow-secret-key-import]} {[LIT_CHARS --import]} {[DQ [VarSub APT_GPG_KEY_PATH]]}) ) ) (FunctionDef create_apt_repository [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS conf]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS conf/distributions]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Origin: Bazel Authors\n"][LIT_CHARS "Label: Bazel\n"][LIT_CHARS "Codename: stable\n"][LIT_CHARS "Architectures: amd64 source\n"][LIT_CHARS "Components: jdk1.7 jdk1.8\n"][LIT_CHARS "Description: Bazel APT Repository\n"][LIT_CHARS "DebOverride: override.stable\n"][LIT_CHARS "DscOverride: override.stable\n"][LIT_CHARS "SignWith: "][VarSub APT_GPG_KEY_ID][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "Origin: Bazel Authors\n"][LIT_CHARS "Label: Bazel\n"][LIT_CHARS "Codename: testing\n"][LIT_CHARS "Architectures: amd64 source\n"][LIT_CHARS "Components: jdk1.7 jdk1.8\n"][LIT_CHARS "Description: Bazel APT Repository\n"][LIT_CHARS "DebOverride: override.testing\n"][LIT_CHARS "DscOverride: override.testing\n"][LIT_CHARS "SignWith: "][VarSub APT_GPG_KEY_ID][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS conf/options]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "verbose\n"][LIT_CHARS "ask-passphrase\n"][LIT_CHARS "basedir .\n"]]} 0), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS conf/override.stable]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS conf/override.testing]}) (Com {[LIT_CHARS ensure_gpg_secret_key_imported]}) (= scope= flags=0 words=[] bindings=[('distribution', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('deb_pkg_name_jdk8', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('deb_pkg_name_jdk7', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('deb_dsc_name', {[DQ [VarSub 4]]})]) (Com {[LIT_CHARS debsign]} {[LIT_CHARS -k]} {[VarSub APT_GPG_KEY_ID]} {[DQ [VarSub deb_dsc_name]]}) (Com {[LIT_CHARS reprepro]} {[LIT_CHARS -C]} {[LIT_CHARS jdk1.8]} {[LIT_CHARS includedeb]} {[DQ [VarSub distribution]]} {[DQ [VarSub deb_pkg_name_jdk8]]}) (Com {[LIT_CHARS reprepro]} {[LIT_CHARS -C]} {[LIT_CHARS jdk1.8]} {[LIT_CHARS includedsc]} {[DQ [VarSub distribution]]} {[DQ [VarSub deb_dsc_name]]}) (Com {[LIT_CHARS reprepro]} {[LIT_CHARS -C]} {[LIT_CHARS jdk1.7]} {[LIT_CHARS includedeb]} {[DQ [VarSub distribution]]} {[DQ [VarSub deb_pkg_name_jdk7]]}) (Com {[LIT_CHARS reprepro]} {[LIT_CHARS -C]} {[LIT_CHARS jdk1.7]} {[LIT_CHARS includedsc]} {[DQ [VarSub distribution]]} {[DQ [VarSub deb_dsc_name]]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS -m]} {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[LIT_CHARS public-read]} {[LIT_CHARS -r]} {[LIT_CHARS dists]} {[DQ [LIT_CHARS "gs://"][VarSub GCS_APT_BUCKET][LIT_CHARS /]]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS -m]} {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[LIT_CHARS public-read]} {[LIT_CHARS -r]} {[LIT_CHARS pool]} {[DQ [LIT_CHARS "gs://"][VarSub GCS_APT_BUCKET][LIT_CHARS /]]}) ) ) (FunctionDef release_to_apt [] (List (= scope= flags=0 words=[] bindings=[('gs', {[DQ [ComSub (Com {[LIT_CHARS get_gsutil]})]]})]) (= scope= flags=0 words=[] bindings=[('release_name', {[DQ [ComSub (Com {[LIT_CHARS get_release_name]})]]})]) (= scope= flags=0 words=[] bindings=[('rc', {[DQ [ComSub (Com {[LIT_CHARS get_release_candidate]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub GCS_APT_BUCKET test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please set GCS_APT_BUCKET to the name of your GCS bucket for apt repository."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub APT_GPG_KEY_ID test_op=VS_TEST_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please set APT_GPG_KEY_ID for apt repository."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub release_name]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}] [LIT_CHARS /tmp.XXXXXXXX]})]]})]) (= scope= flags=0 words=[] bindings=[('prev_dir', {[DQ [VarSub PWD]]})]) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "{ cd "][VarSub prev_dir][LIT_CHARS "; rm -fr "][VarSub dir][LIT_CHARS "; }"]]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dir][LIT_CHARS /][VarSub release_name]]}) (= scope= flags=0 words=[] bindings=[('release_label', {[DQ [ComSub (Com {[LIT_CHARS get_full_release_name]})]]})]) (= scope= flags=0 words=[] bindings=[('deb_pkg_name_jdk8', {[DQ [VarSub release_name][LIT_CHARS /bazel_][VarSub release_label][LIT_CHARS -linux-x86_64.deb]]})]) (= scope= flags=0 words=[] bindings=[('deb_pkg_name_jdk7', {[DQ [VarSub release_name][LIT_CHARS /bazel_][VarSub release_label][LIT_CHARS -jdk7-linux-x86_64.deb]]})]) (= scope= flags=0 words=[] bindings=[('deb_dsc_name', {[DQ [VarSub release_name][LIT_CHARS /bazel_][ComSub (Com {[LIT_CHARS get_release_name]})][LIT_CHARS .dsc]]})]) (= scope= flags=0 words=[] bindings=[('deb_tar_name', {[DQ [VarSub release_name][LIT_CHARS /bazel_][ComSub (Com {[LIT_CHARS get_release_name]})][LIT_CHARS .tar.gz]]})]) (Com {[LIT_CHARS cp]} {[DQ [VarSub tmpdir][LIT_CHARS /bazel_][VarSub release_label][LIT_CHARS -linux-x86_64.deb]]} {[DQ [VarSub dir][LIT_CHARS /][VarSub deb_pkg_name_jdk8]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub tmpdir][LIT_CHARS /bazel_][VarSub release_label][LIT_CHARS -jdk7-linux-x86_64.deb]]} {[DQ [VarSub dir][LIT_CHARS /][VarSub deb_pkg_name_jdk7]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub tmpdir][LIT_CHARS /bazel.dsc]]} {[DQ [VarSub dir][LIT_CHARS /][VarSub deb_dsc_name]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub tmpdir][LIT_CHARS /bazel.tar.gz]]} {[DQ [VarSub dir][LIT_CHARS /][VarSub deb_tar_name]]}) (Com {[LIT_CHARS cd]} {[DQ [VarSub dir]]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub rc]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS create_apt_repository]} {[LIT_CHARS testing]} {[DQ [VarSub deb_pkg_name_jdk8]]} {[DQ [VarSub deb_pkg_name_jdk7]]} {[DQ [VarSub deb_dsc_name]]}) (ElseTrue) (Com {[LIT_CHARS create_apt_repository]} {[LIT_CHARS stable]} {[DQ [VarSub deb_pkg_name_jdk8]]} {[DQ [VarSub deb_pkg_name_jdk7]]} {[DQ [VarSub deb_dsc_name]]}) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub prev_dir]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub dir]]}) (Com {[LIT_CHARS trap]} {[LIT_CHARS -]} {[LIT_CHARS EXIT]}) ) ) ) ) (FunctionDef deploy_release [] (List (= scope= flags=0 words=[] bindings=[('github_args', {[Array ]})]) (For i [{[DQ [VarSub @]]}]) (If (Pipeline! (Subshell (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub i]]} {[LIT_CHARS README.md] [LIT_OTHER "$"]}}) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub i]]} {[LIT_CHARS bazel.dsc]}}) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub i]]} {[LIT_CHARS bazel.tar.gz]}}) ) ) ) ) (= scope= flags=0 words=[] bindings=[('github_args+', {[Array {[DQ [VarSub i]]}]})]) ) ) (Com {[LIT_CHARS release_to_github]} {[DQ [VarSub github_args bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}) (Com {[LIT_CHARS release_to_gcs]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS release_to_apt]}) ) ) (FunctionDef bazel_release [] (List (= scope= flags=0 words=[] bindings=[('README', {[VarSub 2] [LIT_CHARS /README.md]})]) (= scope= flags=0 words=[] bindings=[('tmpdir', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}] [LIT_CHARS /tmp.XXXXXXXX]})]})]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS ensure_gpg_secret_key_imported]}) (While (DParen {A2 AS_OP_GREAT {A Atom NODE_ARITH_WORD {[VarSub #]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}) (List (= scope= flags=0 words=[] bindings=[('platform', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('folder', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) (For file [{[VarSub folder] [LIT_CHARS /] [LIT_OTHER "*"]}]) (List (= scope= flags=0 words=[] bindings=[('filename', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub file]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub filename]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS README.md]} {[LIT_OTHER "]"]}) (List (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub filename]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS bazel.dsc]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub filename]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS bazel.tar.gz]]} {[LIT_OTHER "]"]}) ) (= scope= flags=0 words=[] bindings=[('destfile', {[VarSub tmpdir] [LIT_CHARS /] [VarSub filename]})]) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub file]]} {[LIT_CHARS /] [LIT_CHARS "("] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "*"] [LIT_CHARS ")"] [LIT_CHARS "("] [\ LIT_ESCAPED_CHAR "\\."] [LIT_OTHER "["] [LIT_OTHER "^"] [\ LIT_ESCAPED_CHAR "\\."] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_CHARS ")"] [LIT_OTHER "$"]}}) (= scope= flags=0 words=[] bindings=[('destfile', {[VarSub tmpdir] [LIT_CHARS /] [VarSub BASH_REMATCH bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}})] [LIT_CHARS -] [VarSub platform] [VarSub BASH_REMATCH bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('destfile', {[VarSub tmpdir] [LIT_CHARS /] [VarSub filename] [LIT_CHARS -] [VarSub platform]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub destfile]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mv]} {[VarSub file]} {[VarSub destfile]}) (Com {[LIT_CHARS checksum]} {[VarSub destfile]} < (FilenameRedirectNode filename={[VarSub destfile] [LIT_CHARS .sha256]} "> 1), > ) (Com {[LIT_CHARS gpg]} {[LIT_CHARS --no-tty]} {[LIT_CHARS --detach-sign]} {[LIT_CHARS -u]} {[DQ [VarSub APT_GPG_KEY_ID]]} {[DQ [VarSub destfile]]}) ) ) ) ) ) ) ) ) (Com {[LIT_CHARS deploy_release]} {[VarSub README]} {[ComSub (Com {[LIT_CHARS find]} {[VarSub tmpdir]} {[LIT_CHARS -type]} {[LIT_CHARS f]})]}) (= scope= flags=1 words=[] bindings=[('RELEASE_EMAIL', {[DQ [ComSub (Com {[LIT_CHARS generate_email]})]]})]) (= scope= flags=1 words=[] bindings=[('RELEASE_EMAIL_RECIPIENT', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub RELEASE_EMAIL]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -1]}) )]]})]) (= scope= flags=1 words=[] bindings=[('RELEASE_EMAIL_SUBJECT', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub RELEASE_EMAIL]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -2]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -1]}) )]]})]) (= scope= flags=1 words=[] bindings=[('RELEASE_EMAIL_CONTENT', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub RELEASE_EMAIL]]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_OTHER "+"] [LIT_CHARS 3]}) )]]})]) ) ) (FunctionDef build_and_publish_site [] (List (= scope= flags=0 words=[] bindings=[('tmpdir', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}] [LIT_CHARS /tmp.XXXXXXXX]})]})]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (= scope= flags=0 words=[] bindings=[('gs', {[DQ [ComSub (Com {[LIT_CHARS get_gsutil]})]]})]) (= scope= flags=0 words=[] bindings=[('site', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('bucket', {[DQ [VarSub 2]]})]) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub site]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub bucket]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: build_and_publish_site "]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS tar]} {[LIT_CHARS xf]} {[DQ [VarSub site]]} {[LIT_CHARS --exclude] [LIT_OTHER "="] [LIT_CHARS CNAME]} {[LIT_CHARS -C]} {[DQ [VarSub tmpdir]]}) (Com {[LIT_CHARS jekyll]} {[LIT_CHARS build]} {[LIT_CHARS -s]} {[DQ [VarSub tmpdir]]} {[LIT_CHARS -d]} {[DQ [VarSub tmpdir][LIT_CHARS /production]]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS rsync]} {[LIT_CHARS -r]} {[LIT_CHARS -c]} {[DQ [VarSub tmpdir][LIT_CHARS /production]]} {[DQ [LIT_CHARS "gs://"][VarSub bucket]]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS web]} {[LIT_CHARS set]} {[LIT_CHARS -m]} {[LIT_CHARS index.html]} {[LIT_CHARS -e]} {[LIT_CHARS 404.html]} {[DQ [LIT_CHARS "gs://"][VarSub bucket]]}) (Com {[DQ [VarSub gs]]} {[LIT_CHARS -m]} {[LIT_CHARS acl]} {[LIT_CHARS ch]} {[LIT_CHARS -R]} {[LIT_CHARS -u]} {[LIT_CHARS AllUsers] [LIT_OTHER ":"] [LIT_CHARS R]} {[DQ [LIT_CHARS "gs://"][VarSub bucket]]}) ) ) )