(command.CommandList children: [ (C {<set>} {<-euo>} {<pipefail>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<which>} {(DQ <spacejam>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ < 'Couldn\'t find executable \'spacejam\' - try installing the package from npm with \'sudo -H npm install -g spacejam\'?' > ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [15 35] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SCRIPT_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} { (DQ (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>}) ) ) } ) ) ) } ) (C {<pwd>}) ] ) ) } spids: [52] ) ] ) (C {<cd>} {(DQ ($ Id.VSub_DollarName '$SCRIPT_DIR'))}) (command.ShFunction name: run_build body: (BraceGroup children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {(DQ ($ Id.VSub_DollarName '$SCRIPT_DIR') <'/..'>)}) (C {<make>} {<shell-env>}) ] ) ) (C {<cd>} {(DQ ($ Id.VSub_DollarName '$SCRIPT_DIR'))}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SKIP_BUILD) op: assign_op.Equal rhs: {(DQ <no>)} spids: [115] ) ] ) (command.ShFunction name: handle_args body: (BraceGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<getopts>} {(DQ <f>)} {<opt>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$opt')} arms: [ (case_arm pat_list: [{<f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SKIP_BUILD) op: assign_op.Equal rhs: {(DQ <yes>)} spids: [152] ) ] ) ] spids: [148 149 158 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} {(DQ <'You can add \'-f\' to skip the build step'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [161 162 177 -1] ) ] ) ] ) ) ] ) ) (C {<handle_args>} {(DQ ($ Id.VSub_At '$@'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <yes>)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$SKIP_BUILD'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<run_build>})] spids: [194 212] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SETTINGS) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<mktemp>}))} spids: [220] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$SETTINGS')} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<__EOF__>} here_end_span_id: 289 stdin_parts: [ <'{\n'> <' '> <Id.Right_DoubleQuote '"'> <public> <Id.Right_DoubleQuote '"'> <': {\n'> <' '> <Id.Right_DoubleQuote '"'> <buildstamp> <Id.Right_DoubleQuote '"'> <': '> <Id.Right_DoubleQuote '"'> <'[local dev front-end]'> <Id.Right_DoubleQuote '"'> <',\n'> <' '> <Id.Right_DoubleQuote '"'> <allowDemoAccounts> <Id.Right_DoubleQuote '"'> <': true,\n'> <' '> <Id.Right_DoubleQuote '"'> <allowDevAccounts> <Id.Right_DoubleQuote '"'> <': true,\n'> <' '> <Id.Right_DoubleQuote '"'> <allowUninvited> <Id.Right_DoubleQuote '"'> <': '> (braced_var_sub token: <Id.VSub_Name ALLOW_UNINVITED> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<false>}) ) <',\n'> <' '> <Id.Right_DoubleQuote '"'> <isTesting> <Id.Right_DoubleQuote '"'> <': true,\n'> <' '> <Id.Right_DoubleQuote '"'> <wildcardHost> <Id.Right_DoubleQuote '"'> <': '> <Id.Right_DoubleQuote '"'> <'*.local.sandstorm.io'> <Id.Right_DoubleQuote '"'> <'\n'> <' }\n'> <'}\n'> ] ) ) ] do_fork: T ) (C {<export>} {<Id.Lit_VarLike 'PYTHONPATH='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {(DQ ($ Id.VSub_DollarName '$SCRIPT_DIR') <'/../find-meteor-dev-bundle.sh'>)}) ) <'/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib'> } ) (C {<exec>} {<spacejam>} {<test-packages>} {<--settings>} {($ Id.VSub_DollarName '$SETTINGS')} {<'./packages/sandstorm-permissions'>} ) ] )