From d904f17fee2768e81c8315893ba303ac60e232bc Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Sun, 7 Jun 2015 22:51:39 +0200 Subject: [PATCH] Added upload-apk script (only google play for now) and bm lang flag --- templates/launcher-flag-bm.png | Bin 0 -> 78546 bytes upload-apk.py | 236 +++++++++++++++++++++++++++++++++ 2 files changed, 236 insertions(+) create mode 100644 templates/launcher-flag-bm.png create mode 100755 upload-apk.py diff --git a/templates/launcher-flag-bm.png b/templates/launcher-flag-bm.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc1ce41396a9f184d1202d17491e868e881d42f GIT binary patch literal 78546 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 L@}gDW41fH8Z;~Me literal 0 HcmV?d00001 diff --git a/upload-apk.py b/upload-apk.py new file mode 100755 index 000000000..6c7c9627c --- /dev/null +++ b/upload-apk.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# vim: ai ts=4 sts=4 et sw=4 nu + +from __future__ import (unicode_literals, absolute_import, + division, print_function) +import logging +import sys +import os +import json +import requests +import tempfile +import shutil +from subprocess import call +try: + from StringIO import StringIO +except ImportError: + from io import StringIO + +# check for python version as google client api is broken on py2 +if sys.version_info.major < 3: + print("You must run this script with python3 as " + "Google API Client is broken python2") + sys.exit(1) + +PLAY_STORE = 'play_store' +ALPHA = 'alpha' +BETA = 'beta' +PROD = 'prod' + +logging.basicConfig(level=logging.DEBUG) +logger = logging.getLogger(__name__) +for handler in logging.root.handlers: + handler.addFilter(logging.Filter('__main__')) +CURRENT_PATH = os.path.dirname(os.path.abspath(__file__)) + + +def usage(arg0, exit=None): + print("Usage: {} ".format(arg0)) + if exit is not None: + sys.exit(exit) + + +def syscall(args, shell=False, with_print=True): + ''' execute an external command. Use shell=True if using bash specifics ''' + args = args.split() + if with_print: + print(u"-----------\n" + u" ".join(args) + u"\n-----------") + + if shell: + args = ' '.join(args) + call(args, shell=shell) + + +def get_remote_content(url): + ''' file descriptor from remote file using GET ''' + req = requests.get(url) + try: + req.raise_for_status() + except Exception as e: + logger.error("Failed to load data at `{}`".format(url)) + logger.exception(e) + sys.exit(1) + return StringIO.StringIO(req.text) + + +def get_local_content(path): + ''' file descriptor from local file ''' + if not os.path.exists(path) or not os.path.isfile(path): + logger.error("Unable to find JSON file `{}`".format(path)) + sys.exit(1) + + try: + fd = open(path, 'r') + except Exception as e: + logger.error("Unable to open file `{}`".format(path)) + logger.exception(e) + sys.exit(1) + return fd + + +def is_remote_path(path): + return path.startswith('http:') + + +def get_local_remote_fd(path): + ''' file descriptor for a path (either local or remote) ''' + if is_remote_path(path): + return get_remote_content(path) + else: + return get_local_content(path) + + +def copy_to(src, dst): + ''' copy source content (local or remote) to local file ''' + local = None + if is_remote_path(src): + local = tempfile.NamedTemporaryFile(delete=False) + download_remote_file(src, local.name) + src = local.name + shutil.copy(src, dst) + if local is not None: + os.remove(local.name) + + +def download_remote_file(url, path): + ''' download url to path ''' + syscall('wget -c -O {path} {url}'.format(path=path, url=url)) + + +def upload_to_play_store(jsdata, channel=None): + if channel is None: + channel = ALPHA + + logger.info("Starting Google Play Store using {}".format(channel)) + + # ensure dependencies are met + try: + import httplib2 + from apiclient.discovery import build + from oauth2client import client + except ImportError: + logger.error("Missing Google API Client dependency.\n" + "Please install with: " + "pip install google-api-python-client") + return + + if 'GOOGLE_API_KEY' not in os.environ: + logger.error("You need to set the GOOGLE_API_KEY environment variable " + "to use the Google API (using path to google-api.p12)") + return + + GOOGLE_CLIENT_ID = '107823297044-nhoqv99cpr86vlfcronskirgib2g7tq' \ + '9@developer.gserviceaccount.com' + + service = build('androidpublisher', 'v2') + + key = open(os.environ['GOOGLE_API_KEY'], 'rb').read() + credentials = client.SignedJwtAssertionCredentials( + GOOGLE_CLIENT_ID, + key, + scope='https://www.googleapis.com/auth/androidpublisher') + + http = httplib2.Http() + http = credentials.authorize(http) + + service = build('androidpublisher', 'v2', http=http) + + package_name = jsdata['package'] + version_name = jsdata['version_name'] + apk_file = os.path.join(CURRENT_PATH, 'build', 'outputs', 'apk', + '{}-{}.apk'.format(package_name, version_name)) + + if not jsdata.get('embed_zim', False): + comp_file = tempfile.NamedTemporaryFile(suffix='.a').name + copy_to(jsdata['zim_file'], comp_file) + + try: + # another edit request + edit_request = service.edits().insert(body={}, + packageName=package_name) + result = edit_request.execute() + edit_id = result['id'] + + logger.info("Starting Edit `{}`".format(edit_id)) + + # upload APK + logger.info("Uploading APK file: {}".format(apk_file)) + apk_response = service.edits().apks().upload( + editId=edit_id, + packageName=package_name, + media_body=apk_file).execute() + + logger.debug("APK for version code {} has been uploaded" + .format(apk_response['versionCode'])) + + # release APK into the specified channel + track_response = service.edits().tracks().update( + editId=edit_id, + track=channel, + packageName=package_name, + body={'versionCodes': [apk_response['versionCode']]}).execute() + + logger.debug("Publicatio set to {} for version code {}" + .format(track_response['track'], + str(track_response['versionCodes']))) + + # upload companion file + if comp_file: + logger.info("Uploading Expansion file: {}".format(comp_file)) + comp_response = service.edits().expansionfiles().upload( + editId=edit_id, + packageName=package_name, + apkVersionCode=jsdata['version_code'], + expansionFileType='main', + media_body=comp_file).execute() + + logger.debug("Expansion file of size {} has been uploaded" + .format(comp_response['expansionFile']['fileSize'])) + + commit_request = service.edits().commit( + editId=edit_id, packageName=package_name).execute() + + logger.debug("Edit `{}` has been committed. done." + .format(commit_request['id'])) + + except client.AccessTokenRefreshError: + logger.error("The credentials have been revoked or expired, " + "please re-run the application to re-authorize") + +STORES = { + 'play_store': upload_to_play_store, +} + + +def main(json_path, store='{}:{}'.format(PLAY_STORE, ALPHA)): + jsdata = json.load(get_local_remote_fd(json_path)) + + logger.info("Uploading {} APK to {}".format(jsdata['package'], store)) + + try: + store, channel = store.split(':', 1) + except (IndexError, ValueError): + channel = None + + STORES.get(store)(jsdata, channel=channel) + +if __name__ == '__main__': + # ensure we were provided a JSON file as first argument + if len(sys.argv) < 2: + usage(sys.argv[0], 1) + else: + jspath = sys.argv[1] + args = sys.argv[2:] + + main(jspath, *args)