/*
 * Copyright 2021 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * This is the build configuration for the google-ads-java subproject. It
 * depends on the google-ads-annotation-processing subproject.
 */

plugins {
    id 'com.google.api-ads.java-conventions'
}

dependencies {
    api project(":google-ads-stubs-lib")
    implementation 'org.slf4j:slf4j-api:1.7.25'
    implementation 'com.squareup:javapoet:1.11.1'
    testImplementation 'com.google.api:gax-grpc::testlib'
    testImplementation 'org.hamcrest:hamcrest:2.2'
    testImplementation 'org.mockito:mockito-core:4.11.0'
    // Finds all the stubs modules and adds these as dependencies.
    // This saves us from having to update these each time a new API version is
    // added.
    rootProject.allprojects
            .findAll {it.name.startsWith("google-ads-stubs-v")}
            .each {
                // Stubs should be exposed transitively to dependants.
                api it
                // Provides the mock service implementations from each stubs
                // module (e.g. MockGoogleAdsService) as a testFixtures
                // dependency.
                testFixturesApi testFixtures(it)
            }
}

task generateCode(type: JavaExec) {
    group = "Execution"
    description = "Runs the code generators"
    classpath = sourceSets.main.runtimeClasspath
        main = "com.google.ads.googleads.codegen.RunCodeGenerators"
    def outputDir = new File(project.buildDir, "generated/catalog");
    args = [outputDir.getAbsolutePath()]
    outputs.dir(outputDir)
}

project.build.dependsOn(generateCode)

publishing {
    publications {
        maven(MavenPublication) { publication ->
            configurePom(publication,
                    "Google Ads API client library for Java - codegen",
                    "Generated code (stus) and generators for library")
        }
    }
}
