12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#!/usr/bin/env python 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file. 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import getpass 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import os 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import subprocess 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import sys 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import build_server 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__': 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) additional_args = [] 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if len(sys.argv) > 1 and sys.argv[1].endswith('appcfg.py'): 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) appcfg_path = sys.argv[1] 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) additional_args = sys.argv[2:] 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) appcfg_path = None 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) additional_args = sys.argv[1:] 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for path in ['.', 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) os.path.join(os.environ['HOME'], 'local', 'google_appengine'), 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) os.path.join(os.environ['HOME'], 'google_appengine'), 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) os.getcwd()] + sys.path: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) full_path = os.path.join(path, 'appcfg.py') 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if os.path.exists(full_path): 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) appcfg_path = full_path 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if appcfg_path is None: 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print 'appcfg.py could not be found in default paths.' 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print 'usage: update_server.py <path_to_appcfg.py> <appcfg_options>' 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) exit(1) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def run_appcfg(): 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) server2_path = os.path.dirname(sys.argv[0]) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) subprocess.call([appcfg_path, 'update', server2_path] + additional_args) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) build_server.main() 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) username = raw_input( 40b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 'Update github username/password (empty to skip)? ') 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if username: 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) password = getpass.getpass() 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) with open('github_file_system.py') as f: 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) contents = f.read() 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if 'USERNAME = None' not in contents: 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) print 'Error: Can\'t find "USERNAME = None" in github_file_system.py.' 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) exit(1) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if 'PASSWORD = None' not in contents: 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) print 'Error: Can\'t find "PASSWORD = None" in github_file_system.py.' 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) exit(1) 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) try: 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) with open('github_file_system.py', 'w+') as f: 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) f.write( 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) contents.replace('PASSWORD = None', 'PASSWORD = \'%s\'' % password) 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) .replace('USERNAME = None', 'USERNAME = \'%s\'' % username)) 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) run_appcfg() 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) finally: 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) with open('github_file_system.py', 'w+') as f: 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) f.write(contents) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) else: 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) run_appcfg() 62