import androidx.build.Publish

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
}

ext {
    fontDir = project(':noto-emoji-compat-font').projectDir
}

android {
    sourceSets {
        main {
            assets.srcDirs new File(fontDir, "font").getAbsolutePath()
            resources {
                srcDirs += [fontDir.getAbsolutePath()]
                includes += ["LICENSE_UNICODE", "LICENSE_OFL"]
            }
        }

        androidTest {
            assets {
                srcDirs = [new File(fontDir, "supported-emojis").getAbsolutePath()]
            }
        }
    }
    namespace "androidx.emoji2.bundled"

}

dependencies {
    api(project(":emoji2:emoji2"))

    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.espressoCore, excludes.espresso)
    androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation project(':internal-testutils-runtime')

    // view tests that use font are in this module as well; for licensing reasons
    androidTestImplementation project(":emoji2:emoji2-views")
}

androidx {
    name = "Android Emoji2 Compat"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenGroup = LibraryGroups.EMOJI2
    inceptionYear = "2017"
    description = "Library bundled with assets to enable emoji compatibility in Kitkat and newer " +
            "devices to avoid the empty emoji characters."

    license {
        name = "SIL Open Font License, Version 1.1"
        url = "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web"
    }

    license {
        name = "Unicode, Inc. License"
        url = "http://www.unicode.org/copyright.html#License"
    }
}