1/*
2 * Copyright 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package androidx.build
18
19import androidx.build.SupportConfig.DEFAULT_MIN_SDK_VERSION
20import groovy.lang.Closure
21import org.gradle.api.Project
22import java.util.ArrayList
23
24/**
25 * Extension for [SupportAndroidLibraryPlugin] and [SupportJavaLibraryPlugin].
26 */
27open class SupportLibraryExtension(val project: Project) {
28    var name: String? = null
29    var mavenVersion: Version? = null
30    var mavenGroup: String? = null
31    var description: String? = null
32    var inceptionYear: String? = null
33    var url = SUPPORT_URL
34    private var licenses: MutableCollection<License> = ArrayList()
35    var java8Library = false
36    var publish = false
37    var failOnUncheckedWarnings = true
38    var failOnDeprecationWarnings = true
39
40    /**
41     * This flag works only if publish flag is "true".
42     * It is useful for modules that are used for tooling. For example room annotation
43     * processor module is published, but we don't want to expose any docs, because we don't
44     * support using it as a library.
45     */
46    var generateDocs = true
47    /**
48     * If unset minSdkVersion will be [DEFAULT_MIN_SDK_VERSION].
49     */
50    var minSdkVersion: Int = DEFAULT_MIN_SDK_VERSION
51
52    fun license(closure: Closure<*>): License {
53        val license = project.configure(License(), closure) as License
54        licenses.add(license)
55        return license
56    }
57
58    fun getLicenses(): Collection<License> {
59        return licenses
60    }
61
62    companion object {
63        @JvmField
64        val ARCHITECTURE_URL
65                = "https://developer.android.com/topic/libraries/architecture/index.html"
66        @JvmField
67        val SUPPORT_URL = "http://developer.android.com/tools/extras/support-library.html"
68    }
69}
70
71class License {
72    var name: String? = null
73    var url: String? = null
74}