1 #!/usr/bin/env python 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 import getpass 7 import os 8 import subprocess 9 import sys 10 11 import build_server 12 13 if __name__ == '__main__': 14 additional_args = [] 15 if len(sys.argv) > 1 and sys.argv[1].endswith('appcfg.py'): 16 appcfg_path = sys.argv[1] 17 additional_args = sys.argv[2:] 18 else: 19 appcfg_path = None 20 additional_args = sys.argv[1:] 21 for path in ['.', 22 os.path.join(os.environ['HOME'], 'local', 'google_appengine'), 23 os.path.join(os.environ['HOME'], 'google_appengine'), 24 os.getcwd()] + sys.path: 25 full_path = os.path.join(path, 'appcfg.py') 26 if os.path.exists(full_path): 27 appcfg_path = full_path 28 break 29 if appcfg_path is None: 30 print 'appcfg.py could not be found in default paths.' 31 print 'usage: update_server.py <path_to_appcfg.py> <appcfg_options>' 32 exit(1) 33 34 def run_appcfg(): 35 server2_path = os.path.dirname(sys.argv[0]) 36 subprocess.call([appcfg_path, 'update', server2_path] + additional_args) 37 38 build_server.main() 39 username = raw_input( 40 'Update github username/password (empty to skip)? ') 41 if username: 42 password = getpass.getpass() 43 with open('github_file_system.py') as f: 44 contents = f.read() 45 if 'USERNAME = None' not in contents: 46 print 'Error: Can\'t find "USERNAME = None" in github_file_system.py.' 47 exit(1) 48 if 'PASSWORD = None' not in contents: 49 print 'Error: Can\'t find "PASSWORD = None" in github_file_system.py.' 50 exit(1) 51 try: 52 with open('github_file_system.py', 'w+') as f: 53 f.write( 54 contents.replace('PASSWORD = None', 'PASSWORD = \'%s\'' % password) 55 .replace('USERNAME = None', 'USERNAME = \'%s\'' % username)) 56 run_appcfg() 57 finally: 58 with open('github_file_system.py', 'w+') as f: 59 f.write(contents) 60 else: 61 run_appcfg() 62