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}