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