/*
 * ********************************************************************************************************************
 *
 *               iFHS7.
 *              ;BBMBMBMc                  rZMBMBR              BMB
 *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
 *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
 *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
 *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
 *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
 *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
 *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
 *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
 *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
 *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
 *         i0BM: SWKHKGO  MBDv
 *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
 *              ,  XMW  ..
 *                  r                                                                     All rights reserved.
 *
 * ********************************************************************************************************************
 */

group rootProject.group
version rootProject.version

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

apply plugin: 'org.jetbrains.dokka-android'
apply plugin: 'maven'

sourceCompatibility = JVM_TARGET

//compileKotlin {
//    kotlinOptions.jvmTarget = JVM_TARGET
//}
//compileTestKotlin {
//    kotlinOptions.jvmTarget = JVM_TARGET
//}

android {
    compileSdkVersion ANDROID_SDK_VERSION.toInteger()
    buildToolsVersion ANDROID_BUILD_TOOLS_VERSION

    defaultConfig {
        minSdkVersion ANDROID_MIN_SDK_VERSION.toInteger()
        targetSdkVersion ANDROID_SDK_VERSION.toInteger()
        versionCode SAGA_CODE.toInteger()
        versionName SAGA_ANDROID_VERSION

        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
    }

    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    kotlinOptions {
        jvmTarget = JVM_TARGET
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // kotlin 依赖
    implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: KOTLIN_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // android支持
    implementation group: 'com.android.support', name: 'appcompat-v7', version: ANDROID_SUPPORT_VERSION
    implementation group: 'com.android.support', name: 'design', version: ANDROID_SUPPORT_VERSION
    //implementation group: 'com.android.support', name: 'support-v4', version: ANDROID_SUPPORT_VERSION
    implementation group: 'com.android.support.constraint', name: 'constraint-layout', version: CONSTRAINT_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // anko依赖
    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-common
    implementation group: 'org.jetbrains.anko', name: 'anko-commons', version: ANKO_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 测试依赖
    testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: JUNIT_VERSION
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 运行时权限申请
    // https://mvnrepository.com/artifact/pub.devrel/easypermissions
    implementation group: 'pub.devrel', name: 'easypermissions', version: EASYPERMISSIONS_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // http请求
    // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
    implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: OKHTTP_VERSION


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // JSON解析
    // https://mvnrepository.com/artifact/com.alibaba/fastjson
    implementation group: 'com.alibaba', name: 'fastjson', version: FASTJSON_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 二维码与条形码
    // https://mvnrepository.com/artifact/com.google.zxing/core
    implementation group: 'com.google.zxing', name: 'core', version: ZXING_VERSION

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // SAGA依赖
    implementation group: 'cn.sagacloud', name: 'saga-kotlin-base', version: SAGA_KOTLIN_VERSION
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 文档生成

// 源码
task sourcesJar(type: Jar) {
    group = 'jar'
    from "${android.sourceSets.main.java.srcDirs}"
    classifier = 'sources'
}

// 文档
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
    jdkVersion = JDK_VERSION.toInteger()
    noStdlibLink = true
    outputFormat = 'javadoc'
    outputDirectory = "$buildDir/javadoc"
//    sourceDirs = files('src/main/java')
}

// 上成上传的文档jar包
task javadocJar(type: Jar, dependsOn: dokkaJavadoc) {
    group = 'jar'
    classifier = 'javadoc'
    from "${dokka.outputDirectory}"
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// maven 仓库管理

// 设置上传的包,默认上传aar与pom
artifacts {
    // 上传源码包
    // archives sourcesJar
    // 上传文档包
    // archives javadocJar
}

uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = project.group
            pom.version = project.version
            pom.artifactId = project.name
            pom.project {
                name project.name
                packaging 'jar'
                url SAGA_URL
                description '斯伯坦机器人世界 android核心支持库。'
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id DEVELOPER_ID
                        name DEVELOPER_NAME
                    }
                }
            }
            snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            repository(url: MAVEN_REPO_RELEASE_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
        }
    }
}