/**
 * Task to copy icon font files
 */
afterEvaluate {
    def config = project.hasProperty("vectoricons") ? project.vectoricons : [];
    def iconFontsDir = config.iconFontsDir ?: "../../node_modules/react-native-vector-icons/Fonts";
    def iconFontNames = config.iconFontNames ?: [ "*.ttf" ];

    android.applicationVariants.all { def variant ->
        def targetName = variant.name.capitalize()
        def targetPath = variant.dirName

        // Create task for copying fonts
        def currentFontCopyTask = tasks.create(
            name: "copy${targetName}ReactNativeVectorIconFonts",
            type: Copy) {
            group = "react"
            description = "copy fonts into ${targetName}."

            into("$buildDir/intermediates")

            iconFontNames.each { fontName ->

                from(iconFontsDir) {
                    include(fontName)
                    into("assets/${targetPath}/fonts/")
                }

                // Workaround for Android Gradle Plugin 3.2+ new asset directory
                from(iconFontsDir) {
                    include(fontName)
                    into("merged_assets/${variant.name}/merge${targetName}Assets/out/fonts/")
                }

                // Workaround for Android Gradle Plugin 3.4+ new asset directory
                from(iconFontsDir) {
                    include(fontName)
                    into("merged_assets/${variant.name}/out/fonts/")
                }
            }

            // mergeAssets must run first, as it clears the intermediates directory
            dependsOn(variant.mergeAssetsProvider.get())
        }

        // mergeResources task runs before the bundle file is copied to the intermediate asset directory from Android plugin 4.1+.
        // This ensures to copy the bundle file before mergeResources task starts
        def mergeResourcesTask = tasks.findByName("merge${targetName}Resources")
        mergeResourcesTask.dependsOn(currentFontCopyTask)
    }
}
