1 #!/usr/bin/env python 2 3 import codecs, httplib, json, optparse, os, urllib, shutil, subprocess, sys 4 5 upstream_git = 'https://github.com/catapult-project/catapult.git' 6 7 script_dir = os.path.dirname(os.path.abspath(sys.argv[0])) 8 catapult_dir = os.path.join(script_dir, 'catapult') 9 10 parser = optparse.OptionParser() 11 parser.add_option('--local', dest='local_dir', metavar='DIR', 12 help='use a local catapult') 13 parser.add_option('--no-min', dest='no_min', default=False, action='store_true', 14 help='skip minification') 15 options, args = parser.parse_args() 16 17 # Update the source if needed. 18 if options.local_dir is None: 19 # Remove the old source tree. 20 shutil.rmtree(catapult_dir, True) 21 22 # Pull the latest source from the upstream git. 23 git_args = ['git', 'clone', upstream_git, catapult_dir] 24 p = subprocess.Popen(git_args, stdout=subprocess.PIPE, cwd=script_dir) 25 p.communicate() 26 if p.wait() != 0: 27 print 'Failed to checkout source from upstream git.' 28 sys.exit(1) 29 30 catapult_git_dir = os.path.join(catapult_dir, '.git') 31 # Update the UPSTREAM_REVISION file 32 git_args = ['git', 'rev-parse', 'HEAD'] 33 p = subprocess.Popen(git_args, 34 stdout=subprocess.PIPE, 35 cwd=catapult_dir, 36 env={"GIT_DIR":catapult_git_dir}) 37 out, err = p.communicate() 38 if p.wait() != 0: 39 print 'Failed to get revision.' 40 sys.exit(1) 41 42 shutil.rmtree(catapult_git_dir, True) 43 44 rev = out.strip() 45 with open('UPSTREAM_REVISION', 'wt') as f: 46 f.write(rev + '\n') 47 else: 48 catapult_dir = options.local_dir 49 50 51 # Update systrace_trace_viewer.html 52 systrace_dir = os.path.join(catapult_dir, 'systrace', 'systrace') 53 sys.path.append(systrace_dir) 54 import update_systrace_trace_viewer 55 update_systrace_trace_viewer.update(no_auto_update=True, no_min=options.no_min) 56