Merge pull request #66 from kiwix/fix_custom_app

Fix custom app
This commit is contained in:
Matthieu Gautier 2017-07-19 18:26:07 +02:00 committed by GitHub
commit 2493f7e42f
3 changed files with 63 additions and 33 deletions

View File

@ -51,25 +51,31 @@ def parse_args():
advance = parser.add_argument_group('advance', "Some advanced options.") advance = parser.add_argument_group('advance', "Some advanced options.")
advance.add_argument('--extra-code', type=int, default=0) advance.add_argument('--extra-code', type=int, default=0)
advance.add_argument('--version-name', default=None,
help="The version of the application (seen by user). Get from json info file by default.")
advance.add_argument('--check-certificate', default=True) advance.add_argument('--check-certificate', default=True)
advance.add_argument('--zim-url', default=None) advance.add_argument('--zim-url', default=None, help="Get from json info file by default.")
advance.add_argument('--no-android-upload', action='store_false', dest='android_upload') advance.add_argument('--no-android-upload', action='store_false', dest='android_upload')
# Hidden options # Hidden options
parser.add_argument('--step', default='launch', choices=['launch', 'publish'], help=argparse.SUPPRESS) parser.add_argument('--step', default='launch', choices=['launch', 'publish'], help=argparse.SUPPRESS)
parser.add_argument('--apks-dir', help=argparse.SUPPRESS) parser.add_argument('--apks-dir', help=argparse.SUPPRESS)
parser.add_argument('--version', default="0", help=argparse.SUPPRESS) parser.add_argument('--zim-path', default=None, help=argparse.SUPPRESS)
parser.add_argument('--content-version-code', type=int) parser.add_argument('--content-version-code', type=int, help=argparse.SUPPRESS)
parser.add_argument('--package-name', default=None, help=argparse.SUPPRESS) parser.add_argument('--package-name', default=None, help=argparse.SUPPRESS)
parser.add_argument('--google-api-key', help=argparse.SUPPRESS) parser.add_argument('--google-api-key', help=argparse.SUPPRESS)
options = parser.parse_args() options = parser.parse_args()
if not options.package_name or not options.zim_url: if (not options.package_name
or not (options.zim_url or options.zim_path)
or not options.version_name):
if not options.package_name: if not options.package_name:
print("Try to get package name from info.json file") print("Try to get package name from info.json file")
if not options.zim_url: if not options.zim_url:
print("Try to get zim url from info.json file") print("Try to get zim url from info.json file")
if not options.version_name:
print("Try to get version_name form info.json file")
request_url = ('https://raw.githubusercontent.com/kiwix/kiwix-android-custom/master/{}/info.json' request_url = ('https://raw.githubusercontent.com/kiwix/kiwix-android-custom/master/{}/info.json'
.format(options.custom_app)) .format(options.custom_app))
json_request = requests.get(request_url) json_request = requests.get(request_url)
@ -84,6 +90,9 @@ def parse_args():
if not options.zim_url: if not options.zim_url:
print("Found zim_url '{}'".format(json_data['zim_url'])) print("Found zim_url '{}'".format(json_data['zim_url']))
options.zim_url = json_data['zim_url'] options.zim_url = json_data['zim_url']
if not options.version_name:
print("Found version_name '{}'".format(json_data['version_name']))
options.version_name = json_data['version_name']
options.base_version = "{}{}".format( options.base_version = "{}{}".format(
datetime.date.today().strftime('%y%j'), datetime.date.today().strftime('%y%j'),
@ -102,38 +111,44 @@ def download_zim_file(zim_url, dest_dir=None):
return os.path.join(dest_dir, out_filename) return os.path.join(dest_dir, out_filename)
def get_zim_size(zim_url, check_certificate=True): def get_zim_size(*, zim_url=None, zim_path=None, check_certificate=True):
print("Try to get zim size") print("Try to get zim size")
if not check_certificate: if not zim_path:
context = ssl.create_default_context() if not check_certificate:
context.check_hostname = False context = ssl.create_default_context()
context.verify_mode = ssl.CERT_NONE context.check_hostname = False
else: context.verify_mode = ssl.CERT_NONE
context = None else:
extra_args = {'context':context} if sys.version_info >= (3, 4, 3) else {} context = None
with urllib.request.urlopen(zim_url, **extra_args) as resource: extra_args = {'context':context} if sys.version_info >= (3, 4, 3) else {}
size = resource.getheader('Content-Length', None) with urllib.request.urlopen(zim_url, **extra_args) as resource:
if size is not None: size = resource.getheader('Content-Length', None)
size = int(size) if size is not None:
print("Zim size is {}".format(size)) size = int(size)
return size print("Zim size is {}".format(size))
else: return size
print("No 'Content-Length' header in http answer from the server.\n" else:
"We need to download the zim file to get its size.") print("No 'Content-Length' header in http answer from the server.\n"
zim_path = download_zim_file(zim_url, tempfile.gettempdir()) "We need to download the zim file to get its size.")
size = os.path.getsize(zim_path) zim_path = download_zim_file(zim_url, tempfile.gettempdir())
print("Zim size is {}".format(size))
return size size = os.path.getsize(zim_path)
print("Zim size is {}".format(size))
return size
def do_launch(options): def do_launch(options):
zim_size = get_zim_size(options.zim_url, options.check_certificate) if options.zim_path:
zim_size = get_zim_size(zim_path=options.zim_path)
else:
zim_size = get_zim_size(zim_url=options.zim_url,
check_certificate=options.check_certificate)
travis_launch_build('kiwix', 'kiwix-build', options, zim_size) travis_launch_build('kiwix', 'kiwix-build', options, zim_size)
print("Travis build has been launch.") print("Travis build has been launch.")
def do_publish(options): def do_publish(options):
zim_path = download_zim_file(options.zim_url) zim_path = options.zim_path or download_zim_file(options.zim_url)
googleService = Google(options) googleService = Google(options)
with googleService.new_request(): with googleService.new_request():
versionCodes = [] versionCodes = []
@ -172,7 +187,7 @@ def travis_launch_build(organisation, repository, options, zim_size):
{ 'ZIM_URL': options.zim_url}, { 'ZIM_URL': options.zim_url},
{ 'EXTRA_CODE': options.extra_code}, { 'EXTRA_CODE': options.extra_code},
{ 'CONTENT_VERSION_CODE': gen_version_code(0, options.base_version)}, { 'CONTENT_VERSION_CODE': gen_version_code(0, options.base_version)},
{ 'VERSION': options.version}, { 'VERSION_NAME': options.version_name},
# google_key # google_key
{ 'secure': ('VAgKBMx0KEIyJlSnpM4YrHKLALIbaibkhlsgiv19ITa6dODoEIqeYHz' { 'secure': ('VAgKBMx0KEIyJlSnpM4YrHKLALIbaibkhlsgiv19ITa6dODoEIqeYHz'
'wFTiL3mRHU6HwtXtdNb/JeMle9NfHJVFSV56ZgFzX7ev9zr0YG0qZQv' 'wFTiL3mRHU6HwtXtdNb/JeMle9NfHJVFSV56ZgFzX7ev9zr0YG0qZQv'

View File

@ -380,8 +380,15 @@ class KiwixAndroid(Dependency):
shutil.rmtree(pj(self.build_path, 'kiwixlib', 'src', 'main')) shutil.rmtree(pj(self.build_path, 'kiwixlib', 'src', 'main'))
except FileNotFoundError: except FileNotFoundError:
pass pass
shutil.copytree(pj(self.buildEnv.install_dir, 'kiwix-lib'), pj(self.build_path, 'kiwixlib', 'src', 'main')) shutil.copytree(pj(self.buildEnv.install_dir, 'kiwix-lib'),
shutil.copy2(pj(self.buildEnv.install_dir, 'share', 'icu', '58.2', 'icudt58l.dat'), pj(self.build_path, 'app', 'src', 'main', 'assets', 'icudt.dat')) pj(self.build_path, 'kiwixlib', 'src', 'main'))
os.makedirs(
pj(self.build_path, 'app', 'src', 'main', 'assets', 'icu'),
exist_ok=True)
shutil.copy2(pj(self.buildEnv.install_dir, 'share', 'icu', '58.2',
'icudt58l.dat'),
pj(self.build_path, 'app', 'src', 'main', 'assets',
'icu', 'icudt58l.dat'))
class KiwixCustomApp(Dependency): class KiwixCustomApp(Dependency):
@ -406,11 +413,13 @@ class KiwixCustomApp(Dependency):
template = ("-i -P customDir={customDir}" template = ("-i -P customDir={customDir}"
" -P zim_file_size={zim_size}" " -P zim_file_size={zim_size}"
" -P version_code={version_code}" " -P version_code={version_code}"
" -P version_name={version_name}"
" -P content_version_code={content_version_code}") " -P content_version_code={content_version_code}")
return template.format( return template.format(
customDir=pj(self.build_path, 'custom'), customDir=pj(self.build_path, 'custom'),
zim_size=self._get_zim_size(), zim_size=self._get_zim_size(),
version_code=os.environ['VERSION_CODE'], version_code=os.environ['VERSION_CODE'],
version_name=os.environ['VERSION_NAME'],
content_version_code=os.environ['CONTENT_VERSION_CODE']) content_version_code=os.environ['CONTENT_VERSION_CODE'])
@property @property
@ -460,8 +469,15 @@ class KiwixCustomApp(Dependency):
shutil.rmtree(pj(self.build_path, 'kiwixlib', 'src', 'main')) shutil.rmtree(pj(self.build_path, 'kiwixlib', 'src', 'main'))
except FileNotFoundError: except FileNotFoundError:
pass pass
shutil.copytree(pj(self.buildEnv.install_dir, 'kiwix-lib'), pj(self.build_path, 'kiwixlib', 'src', 'main')) shutil.copytree(pj(self.buildEnv.install_dir, 'kiwix-lib'),
shutil.copy2(pj(self.buildEnv.install_dir, 'share', 'icu', '58.2', 'icudt58l.dat'), pj(self.build_path, 'app', 'src', 'main', 'assets', 'icudt.dat')) pj(self.build_path, 'kiwixlib', 'src', 'main'))
os.makedirs(
pj(self.build_path, 'app', 'src', 'main', 'assets', 'icu'),
exist_ok=True)
shutil.copy2(pj(self.buildEnv.install_dir, 'share', 'icu', '58.2',
'icudt58l.dat'),
pj(self.build_path, 'app', 'src', 'main', 'assets',
'icu', 'icudt58l.dat'))
# Generate custom directory # Generate custom directory
try: try:

View File

@ -22,7 +22,6 @@ ${TRAVIS_BUILD_DIR}/build_custom_app.py \
--custom-app ${CUSTOM_APP} \ --custom-app ${CUSTOM_APP} \
--package-name ${PACKAGE_NAME} \ --package-name ${PACKAGE_NAME} \
--google-api-key ${GOOGLE_API_KEY} \ --google-api-key ${GOOGLE_API_KEY} \
--version ${VERSION} \
--zim-url ${ZIM_URL} \ --zim-url ${ZIM_URL} \
--apks-dir ${HOME}/APKS \ --apks-dir ${HOME}/APKS \
--content-version-code ${CONTENT_VERSION_CODE} --content-version-code ${CONTENT_VERSION_CODE}