192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas/* 2526389b5eb93f99eaf4dba0b0c75b0b7df9a0f65Aurimas Liutikas * Copyright 2018 The Android Open Source Project 392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * 492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License"); 592d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * you may not use this file except in compliance with the License. 692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * You may obtain a copy of the License at 792d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * 892d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * http://www.apache.org/licenses/LICENSE-2.0 992d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * 1092d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software 1192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS, 1292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * See the License for the specific language governing permissions and 1492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * limitations under the License. 1592d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas */ 1692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 17526389b5eb93f99eaf4dba0b0c75b0b7df9a0f65Aurimas Liutikaspackage androidx.build 1892d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 19526389b5eb93f99eaf4dba0b0c75b0b7df9a0f65Aurimas Liutikasimport androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION 2092d9756871fc44124562297fa569225e096b7a59Aurimas Liutikasimport groovy.lang.Closure 2192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikasimport org.gradle.api.Project 2292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikasimport java.util.ArrayList 2392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 2492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas/** 2592d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas * Extension for [SupportAndroidLibraryPlugin] and [SupportJavaLibraryPlugin]. 2692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas */ 2792d9756871fc44124562297fa569225e096b7a59Aurimas Liutikasopen class SupportLibraryExtension(val project: Project) { 2892d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var name: String? = null 2992d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var mavenVersion: Version? = null 3092d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var mavenGroup: String? = null 3192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var description: String? = null 3292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var inceptionYear: String? = null 3392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var url = SUPPORT_URL 3492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas private var licenses: MutableCollection<License> = ArrayList() 3592d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var java8Library = false 3692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var publish = false 373ac069f8165c086ab4dd6a1766504761f1b55483Aurimas Liutikas var failOnUncheckedWarnings = true 383ac069f8165c086ab4dd6a1766504761f1b55483Aurimas Liutikas var failOnDeprecationWarnings = true 393ac069f8165c086ab4dd6a1766504761f1b55483Aurimas Liutikas 409c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets /** 419c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets * This flag works only if publish flag is "true". 429c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets * It is useful for modules that are used for tooling. For example room annotation 439c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets * processor module is published, but we don't want to expose any docs, because we don't 449c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets * support using it as a library. 459c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets */ 469c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets var generateDocs = true 47b63b3abc571efeeacf9ffe38ad344c1d3b1db195Aurimas Liutikas /** 48238e480cfb27b1afd3755dbeae4a084197cc0559Aurimas Liutikas * If unset minSdkVersion will be [DEFAULT_MIN_SDK_VERSION]. 49b63b3abc571efeeacf9ffe38ad344c1d3b1db195Aurimas Liutikas */ 50238e480cfb27b1afd3755dbeae4a084197cc0559Aurimas Liutikas var minSdkVersion: Int = DEFAULT_MIN_SDK_VERSION 5192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 5292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas fun license(closure: Closure<*>): License { 5392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas val license = project.configure(License(), closure) as License 5492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas licenses.add(license) 5592d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas return license 5692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas } 5792d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 5892d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas fun getLicenses(): Collection<License> { 5992d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas return licenses 6092d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas } 6192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 6292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas companion object { 6392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas @JvmField 649c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets val ARCHITECTURE_URL 659c2468843133a54b69a54e9e5f2b2677f2dc9ff3Sergey Vasilinets = "https://developer.android.com/topic/libraries/architecture/index.html" 6692d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas @JvmField 6792d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas val SUPPORT_URL = "http://developer.android.com/tools/extras/support-library.html" 6892d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas } 6992d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas} 7092d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas 7192d9756871fc44124562297fa569225e096b7a59Aurimas Liutikasclass License { 7292d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var name: String? = null 7392d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas var url: String? = null 7492d9756871fc44124562297fa569225e096b7a59Aurimas Liutikas}