(CommandList children: [ (C {(set)} {(-euo)} {(pipefail)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:XVFB_PID) op:Equal rhs:{(DQ )} spids:[59])] spids: [59] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUN_SELENIUM) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name RUN_SELENIUM> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)}) spids: [65 69] ) ) } spids: [63] ) ] spids: [63] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BUNDLE_PATH) op:Equal rhs:{(DQ )} spids:[72])] spids: [72] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:THIS_DIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(dirname)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(readlink)} {(-f)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [87 92] ) ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [81 94] ) ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [77 96] ) } spids: [76] ) ] spids: [76] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:METEOR_DEV_BUNDLE) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(DQ ($ VSub_Name "$THIS_DIR") (/../find-meteor-dev-bundle.sh))})] ) left_token: <Left_CommandSub "$("> spids: [99 104] ) } spids: [98] ) ] spids: [98] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NODEJS) op: Equal rhs: {(DQ ($ VSub_Name "$METEOR_DEV_BUNDLE") (/bin/node))} spids: [106] ) ] spids: [106] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NPM) op: Equal rhs: {(DQ ($ VSub_Name "$METEOR_DEV_BUNDLE") (/bin/npm))} spids: [112] ) ] spids: [112] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SELENIUM_JAR) op: Equal rhs: {(DQ (selenium-server-standalone-2.53.0.jar))} spids: [118] ) ] spids: [118] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SELENIUM_JAR_SHA256) op: Equal rhs: {(DQ (67b88cbfd3b130de6ff3770948f56cc485fd1abb5b7a769397d9050a59b1e036))} spids: [123] ) ] spids: [123] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SELENIUM_DOWNLOAD_URL) op: Equal rhs: { (DQ ("https://selenium-release.storage.googleapis.com/2.53/") ($ VSub_Name "$SELENIUM_JAR") ) } spids: [128] ) ] spids: [128] ) (FuncDef name: cleanExit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rc) op: Equal rhs: {($ VSub_Number "$1")} spids: [143] ) ] spids: [143] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Name "$rc")} {(-ne)} {(0)} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("Log output: "))}) (C {(cat)} {(DQ ($ VSub_Name "$SANDSTORM_DIR") (/var/log/sandstorm.log))}) ] spids: [-1 161] ) ] spids: [-1 179] ) (C {(DQ ($ VSub_Name "$SANDSTORM_DIR") (/sandstorm))} {(stop)}) (C {(sleep)} {(1)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Name "$rc")} {(-eq)} {(0)} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [(C {(rm)} {(-rf)} {(DQ ($ VSub_Name "$SANDSTORM_DIR"))})] spids: [-1 210] ) ] spids: [-1 234] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$XVFB_PID"))} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [ (C {(kill)} { (CommandSubPart command_list: (CommandList children: [ (C {(pgrep)} {(--parent)} {($ VSub_Name "$XVFB_PID")} {(java)}) ] ) left_token: <Left_CommandSub "$("> spids: [269 277] ) } ) (C {(wait)} {($ VSub_Name "$XVFB_PID")}) ] spids: [-1 252] ) ] spids: [-1 285] ) (C {(exit)} {($ VSub_Name "$rc")}) ] spids: [140] ) spids: [135 139] ) (FuncDef name: cacheSeleniumJar body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolUnary op_id: BoolUnary_e child: {(./) ($ VSub_Name "$SELENIUM_JAR")} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DOWNLOAD) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(mktemp)} {(selenium-download.XXXXXX)})] ) left_token: <Left_CommandSub "$("> spids: [321 325] ) } spids: [320] ) ] spids: [320] ) (C {(curl)} {(-o)} {($ VSub_Name "$DOWNLOAD")} {($ VSub_Name "$SELENIUM_DOWNLOAD_URL")} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DOWNLOAD_SHASUM) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(sha256sum)} {($ VSub_Name "$DOWNLOAD")}) (C {(cut)} {(-f)} {(1)} {(-d)} {(SQ <" ">)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [338 356] ) } spids: [337] ) ] spids: [337] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {(DQ ($ VSub_Name "$DOWNLOAD_SHASUM"))} right: {(DQ ($ VSub_Name "$SELENIUM_JAR_SHA256"))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(mv)} {($ VSub_Name "$DOWNLOAD")} {(./) ($ VSub_Name "$SELENIUM_JAR")}) ] spids: [-1 377] ) ] else_action: [ (C {(echo)} { (DQ ( "Selenium jar download didn't match expected checksum. Discarding." ) ) } ) (C {(exit)} {(1)}) ] spids: [388 403] ) ] spids: [-1 317] ) ] spids: [-1 406] ) ] spids: [299] ) spids: [295 298] ) (FuncDef name: checkInstalled body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(which)} {($ VSub_Number "$1")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(/dev/null)} spids: [427] ) (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [430] ) ] ) ] ) left_token: <Left_CommandSub "$("> spids: [422 432] ) } ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("Couldn't find executable '") ($ VSub_Number "$1") ("' - try installing the ") ($ VSub_Number "$2") (" package?") ) } ) (C {(exit)} {(1)}) ] spids: [-1 436] ) ] spids: [-1 455] ) ] spids: [415] ) spids: [411 414] ) (While cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-gt)} {(0)} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Number "$1")} arms: [ (case_arm pat_list: [{(--no-selenium)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUN_SELENIUM) op: Equal rhs: {(DQ (false))} spids: [491] ) ] spids: [491] ) ] spids: [487 488 497 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$BUNDLE_PATH"))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("Multiple bundle paths specified, please name only one."))} ) (C {(exit)} {(1)}) ] spids: [-1 517] ) ] spids: [-1 532] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BUNDLE_PATH) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(readlink)} {(-f)} {(DQ ($ VSub_Number "$1"))})] ) left_token: <Left_CommandSub "$("> spids: [536 544] ) } spids: [535] ) ] spids: [535] ) ] spids: [500 501 547 -1] ) ] spids: [480 484 550] ) (C {(shift)}) ] spids: [477 555] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$BUNDLE_PATH"))} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("No bundle path specified; perhaps you meant to write '") ($ VSub_Number "$0") (" sandstorm-0-fast.tar.xz'?") ) } ) (C {(exit)} {(1)}) ] spids: [-1 572] ) ] spids: [-1 588] ) (C {(cd)} {(DQ ($ VSub_Name "$THIS_DIR"))}) (C {(checkInstalled)} {(firefox)} {(firefox)}) (C {(DQ ($ VSub_Name "$NPM"))} {(install)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$RUN_SELENIUM"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (false))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(checkInstalled)} {(java)} {(default-jre-headless)}) (C {(checkInstalled)} {(xvfb-run)} {(Xvfb)}) (C {(checkInstalled)} {(pgrep)} {(procps)}) (C {(cacheSeleniumJar)}) (Sentence child: (C {(xvfb-run)} {(--server-args) (Lit_Other "=") (DQ ("-screen 0, 1280x1024x24"))} {(java)} {(-jar)} {(./) ($ VSub_Name "$SELENIUM_JAR")} ) terminator: <Op_Amp "&"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:XVFB_PID) op: Equal rhs: {($ VSub_Bang "$!")} spids: [676] ) ] spids: [676] ) ] spids: [-1 631] ) ] spids: [-1 679] ) (C {(export)} {(Lit_VarLike "SANDSTORM_DIR=") ($ VSub_Name "$THIS_DIR") (/tmp-sandstorm)}) (C {(export)} {(Lit_VarLike "OVERRIDE_SANDSTORM_DEFAULT_DIR=") ($ VSub_Name "$SANDSTORM_DIR")}) (C {(export)} {(Lit_VarLike "PORT=") (9000)}) (C {(export)} {(Lit_VarLike "MONGO_PORT=") (9001)}) (C {(export)} {(Lit_VarLike "SMTP_LISTEN_PORT=") (9002)}) (C {(export)} {(Lit_VarLike "SMTP_OUTGOING_PORT=") (9003)}) (C {(export)} {(Lit_VarLike "IP_INTERFACE_TEST_PORT=") (9004)}) (C {(export)} {(Lit_VarLike "LAUNCH_URL=") (DQ ("http://local.sandstorm.io:") ($ VSub_Name "$PORT"))} ) (C {(rm)} {(-rf)} {(DQ ($ VSub_Name "$SANDSTORM_DIR"))}) (C {(../install.sh)} {(-d)} {(-u)} {(DQ ($ VSub_Name "$BUNDLE_PATH"))}) (SimpleCommand words: [ {(echo)} { (DQ ("IS_TESTING=true\n") ("ALLOW_DEMO_ACCOUNTS=true\n") ("BASE_URL=http://local.sandstorm.io:") ($ VSub_Name "$PORT") ("\n") ("WILDCARD_HOST=*.local.sandstorm.io:") ($ VSub_Name "$PORT") ("\n") ("PORT=") ($ VSub_Name "$PORT") ("\n") ("MONGO_PORT=") ($ VSub_Name "$MONGO_PORT") ("\n") ("SMTP_LISTEN_PORT=") (${ VSub_Name SMTP_LISTEN_PORT) ("\n") ("MAIL_URL=smtp://127.0.0.1:") (${ VSub_Name SMTP_OUTGOING_PORT) ("\n") ("UPDATE_CHANNEL=none\n") ) } ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$SANDSTORM_DIR") (/sandstorm.conf))} spids: [782] ) ] ) (C {(DQ ($ VSub_Name "$SANDSTORM_DIR") (/sandstorm))} {(start)}) (C {(echo)} {(-n)} {(DQ ("Waiting for sandstorm to start."))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:COUNT) op:Equal rhs:{(0)} spids:[805])] spids: [805] ) (Sentence child: (While cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(curl)} {(-s)} {(localhost) (Lit_Other ":") ($ VSub_Name "$PORT")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[820])] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$COUNT"))} {(-gt)} {(600)} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [(C {(echo)} {(DQ ("Sandstorm failed to start"))}) (C {(cleanExit)} {(1)})] spids: [-1 843] ) ] spids: [-1 861] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COUNT) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$COUNT")}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [865 870] ) } spids: [864] ) ] spids: [864] ) (C {(echo)} {(-n)} {(.)}) (C {(sleep)} {(.1)}) ] spids: [825 884] ) ) terminator: <Op_Semi ";"> ) (C {(echo)}) (C {(set)} {(Lit_Other "+") (e)}) (C {(export)} {(Lit_VarLike "DISABLE_DEMO=") (true)}) (C {(DQ ($ VSub_Name "$NPM"))} {(test)}) (C {(cleanExit)} {($ VSub_QMark "$?")}) ] )