blob: 296243f926e6349dfebc78f627ca07ab8780477e [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import sys
import urllib2
import cStringIO
import zipfile
import json
# Path constants. (All of these should be absolute paths.)
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
FLUTTER_DIR = os.path.abspath(os.path.join(THIS_DIR, '..', '..', '..'))
INSTALL_DIR = os.path.join(FLUTTER_DIR, 'third_party', 'android_support')
def GetInstalledVersion(out_file_name):
version_file = os.path.join(INSTALL_DIR, out_file_name + '.stamp')
if not os.path.exists(version_file):
return None
with open(version_file) as f:
return f.read().strip()
def getFile(url, out_file_name):
# Read latest version.
if url == GetInstalledVersion(out_file_name):
return
downloaded_file = urllib2.urlopen(url).read()
if not os.path.exists(INSTALL_DIR):
os.mkdir(INSTALL_DIR)
if (url.endswith('.aar')):
aar_zip = zipfile.ZipFile(cStringIO.StringIO(downloaded_file))
with open(os.path.join(INSTALL_DIR, out_file_name), 'w') as f:
f.write(aar_zip.read('classes.jar'))
else:
with open(os.path.join(INSTALL_DIR, out_file_name), 'w') as f:
f.write(downloaded_file)
# Write version as the last step.
with open(os.path.join(INSTALL_DIR, out_file_name + '.stamp'), 'w') as f:
f.write('%s\n' % url)
def main():
with open (os.path.join(THIS_DIR, 'files.json')) as f:
files = json.load(f)
for entry in files:
getFile(entry['url'], entry['out_file_name'])
if __name__ == '__main__':
sys.exit(main())