
apply plugin: 'com.android.application'
apply plugin: 'findbugs'
apply plugin: 'pmd'

def ABORT_ON_CHECK_FAILURE=false

tasks.withType(Test) {
    systemProperty 'MiFirmwareDir', System.getProperty('MiFirmwareDir', null)
    systemProperty 'logback.configurationFile', System.getProperty('user.dir', null) + '/app/src/main/assets/logback.xml'
    systemProperty 'GB_LOGFILES_DIR', java.nio.file.Files.createTempDirectory('gblog').toString();
}

android {
    compileOptions {
        // for KitKat
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    compileSdkVersion 25
    buildToolsVersion '25.0.2'

    defaultConfig {
        applicationId "nodomain.freeyourgadget.gadgetbridge"
        minSdkVersion 19
        targetSdkVersion 25

        // note: always bump BOTH versionCode and versionName!
        versionName "0.19.2"
        versionCode 95
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError ABORT_ON_CHECK_FAILURE
        lintConfig file("${project.rootDir}/config/lint/lint.xml")

// if true, generate an HTML report (with issue explanations, sourcecode, etc)
        htmlReport true
// optional path to report (default will be lint-results.html in the builddir)
        htmlOutput file("$project.buildDir/reports/lint/lint.html")
    }

    testOptions {
        unitTests.returnDefaultValues = true
    }
}

pmd {
    toolVersion = '5.5.5'
}

dependencies {
//    testCompile 'ch.qos.logback:logback-classic:1.1.3'
//    testCompile 'ch.qos.logback:logback-core:1.1.3'
    testCompile 'junit:junit:4.12'
    testCompile "org.mockito:mockito-core:1.9.5"
    testCompile "org.robolectric:robolectric:3.3.2"

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.github.tony19:logback-android-classic:1.1.1-6'
    compile 'org.slf4j:slf4j-api:1.7.7'
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
    compile 'com.github.pfichtner:durationformatter:0.1.1'
    compile 'de.cketti.library.changelog:ckchangelog:1.2.2'
    compile 'net.e175.klaus:solarpositioning:0.0.9'
    // use pristine greendao instead of our custom version, since our custom jitpack-packaged
    // version contains way too much and our custom patches are in the generator only.
    compile 'org.greenrobot:greendao:2.2.1'
    compile 'org.apache.commons:commons-lang3:3.5'

//    compile project(":DaoCore")
}

preBuild.dependsOn(":GBDaoGenerator:genSources")
gradle.beforeProject {
    preBuild.dependsOn(":GBDaoGenerator:genSources")
}

check.dependsOn 'findbugs', 'pmd', 'lint'

task pmd(type: Pmd) {
    ruleSetFiles = files("${project.rootDir}/config/pmd/pmd-ruleset.xml")
    ignoreFailures = !ABORT_ON_CHECK_FAILURE
    ruleSets = [
            'java-android',
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-junit',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-sunsecure',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]

    source 'src'
    include '**/*.java'
    exclude '**/gen/**'

    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/reports/pmd/pmd.xml"
        }
        html {
            destination "$project.buildDir/reports/pmd/pmd.html"
        }
    }
}

task findbugs(type: FindBugs) {
    ignoreFailures = !ABORT_ON_CHECK_FAILURE
    effort = "default"
    reportLevel = "medium"
    excludeFilter = new File("${project.rootDir}/config/findbugs/findbugs-filter.xml")
    classes = files("${project.rootDir}/app/build/intermediates/classes")
    source = fileTree('src/main/java/')
    classpath = files()
    reports {
        xml.enabled = false
        html.enabled = true
        xml {
            destination "$project.buildDir/reports/findbugs/findbugs-output.xml"
        }
        html {
            destination "$project.buildDir/reports/findbugs/findbugs-output.html"
        }
    }
}
