import org.gradle.process.ExecOperations
import javax.inject.Inject

abstract class RunLineOffsetTask extends DefaultTask {
    @Internal
    abstract DirectoryProperty getWorkingDirectory()

    @Inject
    abstract ExecOperations getExecOperations()

    @TaskAction
    void run() {
        execOperations.exec {
            workingDir workingDirectory.get().asFile
            if (System.getProperty('os.name').toLowerCase().contains('windows')) {
                commandLine 'cmd', '/c', 'npx', 'lineOffsetDynatrace'
            } else {
                commandLine 'npx', 'lineOffsetDynatrace'
            }
        }
    }
}

android.applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        def lineOffsetTask = tasks.register("runLineOffset${variant.name.capitalize()}", RunLineOffsetTask) {
            workingDirectory = layout.projectDirectory
        }
        variant.mergeAssetsProvider.configure { task ->
            task.dependsOn(lineOffsetTask)
        }
    }
}