blob: 61201faeb797fad28654989ab03941d57bea4131 [file] [log] [blame]
import java.nio.file.Files
import java.nio.file.NoSuchFileException
import java.util.zip.ZipEntry
import java.util.zip.ZipFile
/*
* Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
ext.tasks_version = '16.0.1'
def attr = Attribute.of("artifactType", String.class)
configurations {
aar {
attributes { attribute(attr, ArtifactTypeDefinition.JAR_TYPE) }
sourceSets.main.compileClasspath += it
sourceSets.test.compileClasspath += it
sourceSets.test.runtimeClasspath += it
}
}
dependencies {
registerTransform {
from.attribute(attr, "aar")
to.attribute(attr, "jar")
artifactTransform(ExtractJars.class)
}
aar("com.google.android.gms:play-services-tasks:$tasks_version") {
exclude group: 'com.android.support'
}
}
tasks.withType(dokka.getClass()) {
externalDocumentationLink {
url = new URL("https://developers.google.com/android/reference/")
// This is workaround for missing package list in Google API
packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL()
}
afterEvaluate {
classpath += project.configurations.aar.files
}
}
class ExtractJars extends ArtifactTransform {
@Override
List<File> transform(File input) {
unzip(input)
List<File> jars = new ArrayList<>()
outputDirectory.traverse(nameFilter: ~/.*\.jar/) { jars += it }
return jars
}
private void unzip(File zipFile) {
ZipFile zip
try {
zip = new ZipFile(zipFile)
for (entry in zip.entries()) {
unzipEntryTo(zip, entry)
}
} finally {
if (zip != null) zip.close()
}
}
private void unzipEntryTo(ZipFile zip, ZipEntry entry) {
File output = new File(outputDirectory, entry.name)
if (entry.isDirectory()) {
output.mkdirs()
} else {
InputStream stream
try {
stream = zip.getInputStream(entry)
Files.copy(stream, output.toPath())
} catch (NoSuchFileException ignored) {
} finally {
if (stream != null) stream.close()
}
}
}
}