/**
 * Task to copy icon font files
 */

def config = project.hasProperty("vectoricons") ? project.vectoricons : [];

def iconFontsDir = config.iconFontsDir ?: "../../node_modules/zx-react-native-icons/Fonts";
def iconFontNames = config.iconFontNames ?: [ "*.ttf" ];

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

        // Create task for copying fonts
        def currentFontTask = tasks.create(
                name: "copy${targetName}IconFonts",
                type: Copy) {
            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/")
              }
            }
        }

        currentFontTask.dependsOn("merge${targetName}Resources")
        currentFontTask.dependsOn("merge${targetName}Assets")

        [
            "processArmeabi-v7a${targetName}Resources",
            "processX86${targetName}Resources",
            "processUniversal${targetName}Resources",
            "process${targetName}Resources"
        ].each { name ->
            Task dependentTask = tasks.findByPath(name);

            if (dependentTask != null) {
                dependentTask.dependsOn(currentFontTask)
            }
        }
    }
}
