#!/usr/bin/python
#
# Copyright 2017 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import argparse
import os
import re
import shutil
import subprocess
import sys

parser = argparse.ArgumentParser(description='builds skia android apps')
parser.add_argument('-C', '--output_dir', help='ninja out dir')
parser.add_argument('app_name')

args = parser.parse_args()

target_cpu = "arm64"
android_buildtype = "debug"

if args.output_dir == None:
  sys.exit("unknown out directory")

args_gn_path = os.path.join(args.output_dir, "args.gn")
if os.path.exists(args_gn_path):
  for line in open(args_gn_path):
    m = re.match('target_cpu *= *"(.*)"', line.strip())
    if m:
      target_cpu = m.group(1)

# build the apk using gradle
try:
    subprocess.check_call(['./apps/gradlew',
      ':' + args.app_name + ':assemble' + target_cpu + android_buildtype,
      '-papps/' + args.app_name,
      '-P' + target_cpu + '.out.dir=' + os.path.abspath(args.output_dir),
      '--daemon'], cwd=os.path.join(os.path.dirname(__file__), ".."))
except subprocess.CalledProcessError as error:
  print error
  sys.exit("gradle build failed")

# copy apk back into the main out directory
current_dir = os.path.dirname(__file__)
apk_src = os.path.join(current_dir, "..", "apps", args.app_name, "build", "outputs", "apk",
                       args.app_name + "-"  + target_cpu + "-"  + android_buildtype + ".apk")
apk_dst = os.path.join(args.output_dir, args.app_name + ".apk")
shutil.copyfile(apk_src, apk_dst)
