Merge "Make cloud storage lookup faster, fix overwriting pulled jar"
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 8f37f43..56ea215 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -117,7 +117,7 @@
return subprocess.check_output(['git', 'clone', git_url]).strip()
def GitPull():
- return subprocess.check_output(['git', 'pull']).strip()
+ return subprocess.call(['git', 'pull']) == 0
def GitCheckout(file):
return subprocess.check_output(['git', 'checkout', file]).strip()
@@ -153,19 +153,34 @@
else:
return
-def BuildAppWithSelectedShrinkers(app, config, options):
+def GetResultsForApp(app, config, options):
git_repo = config['git_repo']
# Checkout and build in the build directory.
checkout_dir = os.path.join(WORKING_DIR, app)
+ result = {}
+
if not os.path.exists(checkout_dir):
with utils.ChangedWorkingDirectory(WORKING_DIR):
GitClone(git_repo)
else:
with utils.ChangedWorkingDirectory(checkout_dir):
- GitPull()
+ if not GitPull():
+ result['status'] = 'failed'
+ result['error_message'] = 'Unable to pull from remote'
+ return result
+ result['status'] = 'success'
+
+ result_per_shrinker = BuildAppWithSelectedShrinkers(
+ app, config, options, checkout_dir)
+ for shrinker, shrinker_result in result_per_shrinker.iteritems():
+ result[shrinker] = shrinker_result
+
+ return result
+
+def BuildAppWithSelectedShrinkers(app, config, options, checkout_dir):
result_per_shrinker = {}
with utils.ChangedWorkingDirectory(checkout_dir):
@@ -292,6 +307,12 @@
def LogResults(result_per_shrinker_per_app, options):
for app, result_per_shrinker in result_per_shrinker_per_app.iteritems():
print(app + ':')
+
+ if result_per_shrinker.get('status') != 'success':
+ error_message = result_per_shrinker.get('error_message')
+ print(' skipped ({})'.format(error_message))
+ continue
+
baseline = result_per_shrinker.get('proguard', {}).get('dex_size', -1)
for shrinker, result in result_per_shrinker.iteritems():
build_status = result.get('build_status')
@@ -355,12 +376,12 @@
result_per_shrinker_per_app = {}
if options.app:
- result_per_shrinker_per_app[options.app] = BuildAppWithSelectedShrinkers(
+ result_per_shrinker_per_app[options.app] = GetResultsForApp(
options.app, APPS.get(options.app), options)
else:
for app, config in APPS.iteritems():
if not config.get('skip', False):
- result_per_shrinker_per_app[app] = BuildAppWithSelectedShrinkers(
+ result_per_shrinker_per_app[app] = GetResultsForApp(
app, config, options)
LogResults(result_per_shrinker_per_app, options)