# Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
# for details. 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 utils

ANDROID_L_API = '21'
BASE = os.path.join(utils.THIRD_PARTY, 'nest')

V20180926_BASE = os.path.join(BASE, 'nest_20180926_7c6cfb')

# NOTE: we always use android.jar for SDK v25, later we might want to revise it
#       to use proper android.jar version for each of nest version separately.
ANDROID_JAR = utils.get_android_jar(25)

VERSIONS = {
  '20180926': {
    'dex' : {
      'inputs': [os.path.join(V20180926_BASE, 'obsidian-development-debug.apk')],
      'libraries' : [ANDROID_JAR],
      'min-api' : ANDROID_L_API,
    },
    'deploy' : {
      'inputs': [os.path.join(V20180926_BASE, 'obsidian-development-debug.jar')],
      'libraries' : [ANDROID_JAR],
      'allow-type-errors' : 1,
      'pgconf': [
          os.path.join(V20180926_BASE, 'proguard', 'proguard.cfg'),
          os.path.join(V20180926_BASE, 'proguard', 'proguard-no-optimizations.cfg'),
          os.path.join(V20180926_BASE, 'proguard', 'proguard-ignore-warnings.cfg'),
          utils.IGNORE_WARNINGS_RULES],
      # Build for native multi dex
      'min-api' : ANDROID_L_API,
    }
  },
}
