(List (= scope= flags=0 words=[] bindings=[('script_url', {[DQ [LIT_CHARS "http://src.chromium.org/svn/trunk/src/tools/android/adb_remote_setup.sh"]]})]) (FunctionDef update-self [] (List (= scope= flags=0 words=[] bindings=[('script', {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (= scope= flags=0 words=[] bindings=[('new_script', {[DQ [VarSub script][LIT_CHARS .new]]})]) (= scope= flags=0 words=[] bindings=[('updater_script', {[DQ [VarSub script][LIT_CHARS .updater]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS curl]} {[LIT_CHARS -sSf]} {[LIT_CHARS -o]} {[DQ [VarSub new_script]]} {[DQ [VarSub script_url]]}) (Com {[LIT_CHARS return]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[DQ [VarSub new_script]]}) (Com {[LIT_CHARS return]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub updater_script]]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "if mv "][RIGHT_D_QUOTE "\""][VarSub new_script][RIGHT_D_QUOTE "\""][LIT_CHARS " "][RIGHT_D_QUOTE "\""][VarSub script][RIGHT_D_QUOTE "\""][LIT_CHARS "; then\n"][LIT_CHARS " rm -- "][RIGHT_D_QUOTE "\""][VarSub updater_script][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "else\n"][LIT_CHARS " echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "Note: script update failed."][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "fi\n"][LIT_CHARS "ADB_REMOTE_SETUP_NO_UPDATE=1 exec /bin/bash "][RIGHT_D_QUOTE "\""][VarSub script][RIGHT_D_QUOTE "\""][LIT_CHARS " "][VarSub @][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS exec]} {[LIT_CHARS /bin/bash]} {[DQ [VarSub updater_script]]} {[DQ [VarSub @]]}) ) ) (If (DBracket {B2 BINARY_INT_NE {[DQ [VarSub ADB_REMOTE_SETUP_NO_UPDATE]]} {[LIT_CHARS 1]}}) (AndOr OP_OR_IF (Com {[LIT_CHARS update-self]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (DBracket {B? LOGICAL_BINARY_AND {B2 BINARY_INT_NE {[VarSub #]} {[LIT_CHARS 1]}} {B2 BINARY_INT_NE {[VarSub #]} {[LIT_CHARS 2]}}}) (List (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "Usage: adb_remote_setup.sh REMOTE_HOST [REMOTE_ADB]\n"] [LIT_CHARS "\n"] [LIT_CHARS "Configures adb on a remote machine to communicate with a device attached to the\n"] [LIT_CHARS "local machine. This is useful for installing APKs, running tests, etc while\n"] [LIT_CHARS "working remotely.\n"] [LIT_CHARS "\n"] [LIT_CHARS "Arguments:\n"] [LIT_CHARS " REMOTE_HOST hostname of remote machine\n"] [LIT_CHARS " REMOTE_ADB path to adb on the remote machine (you can omit this if adb is in\n"] [LIT_CHARS " the remote host's path)\n"]} 0), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('remote_host', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('remote_adb', {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS adb]}]]})]) (If (Pipeline! (Com {[LIT_CHARS which]} {[LIT_CHARS adb]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: adb must be in your local machine's path."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_CHARS which]} {[LIT_CHARS kinit]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS kinit]} {[LIT_CHARS -R]}) (Com {[LIT_CHARS kinit]}) ) ) (= scope= flags=0 words=[] bindings=[('remote_adb_version', {[ComSub (Com {[LIT_CHARS ssh]} {[DQ [VarSub remote_host]]} {[DQ [VarSub remote_adb][LIT_CHARS " version"]]})]})]) (= scope= flags=0 words=[] bindings=[('local_adb_version', {[ComSub (Com {[LIT_CHARS adb]} {[LIT_CHARS version]})]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub local_adb_version]]} {[DQ [VarSub remote_adb_version]]}}) (List (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "WARNING: local adb is not the same version as remote adb."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This should be fixed since it may result in protocol errors."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " local adb: "][VarSub local_adb_version]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " remote adb: "][VarSub remote_adb_version]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 5]}) ) ) (Com {[LIT_CHARS ssh]} {[DQ [VarSub remote_host]]} {[DQ [VarSub remote_adb][LIT_CHARS " kill-server"]]}) (Com {[LIT_CHARS adb]} {[LIT_CHARS start-server]}) (Com {[LIT_CHARS ssh]} {[LIT_CHARS -C]} {[LIT_CHARS -R]} {[LIT_CHARS 5037] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 5037]} {[LIT_CHARS -L]} {[LIT_CHARS 8001] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 8001]} {[LIT_CHARS -L]} {[LIT_CHARS 9031] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 9031]} {[LIT_CHARS -L]} {[LIT_CHARS 9041] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 9041]} {[LIT_CHARS -L]} {[LIT_CHARS 9051] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 9051]} {[LIT_CHARS -R]} {[LIT_CHARS 10000] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 10000]} {[LIT_CHARS -R]} {[LIT_CHARS 10201] [LIT_OTHER ":"] [LIT_CHARS localhost] [LIT_OTHER ":"] [LIT_CHARS 10201]} {[DQ [VarSub remote_host]]}) )