plugins {
    id 'java'
}

repositories {
    mavenCentral()


    /*** GitLab Maven repository for IdentityIQ libraries ***/
    /*** Visit https://docs.gitlab.com/user/packages/maven_repository/ ***/
    /*
    maven {
        url "https://git.ventum.com/api/v4/projects/436/packages/maven"
        name "GitLab"
        credentials(HttpHeaderCredentials) {
            name = gitLabTokenName
            value = gitLabPrivateToken // This is loaded from global `~/.gradle/gradle.properties`
        }
        authentication {
            header(HttpHeaderAuthentication)
        }
    }
    */

    /*** Alternatively, you can use a folder as a Maven repository
    /*** Structure of the folder for 8.3 should look like this:
     lib
     └── sailpoint
         ├── identityiq
         │   └── 8.3
         │       └── identityiq-8.3.jar
         └── openconnector
             └── 8.3
                 └── openconnector-8.3.jar
    ***/
    /*
        maven {
            url = "file:///${project.projectDir}/lib"
        }
    */
}

def javaReleaseVersion = "__javaVersion__"

sourceSets {
    main {
        java {
            srcDirs = ['main/java']
        }
    }

    test {
        java {
            srcDirs = ['test/java']
        }

        resources {
            srcDirs = ['test/resources']
        }
    }
}

dependencies {
    implementation(
            group: 'javax.ws.rs',
            name: 'javax.ws.rs-api',
            version: '2.1.1'
    )
    implementation(
            group: 'org.apache.logging.log4j',
            name: 'log4j-core',
            version: '2.24.3'
    )
    implementation(
            group: 'org.apache.logging.log4j',
            name: 'log4j-1.2-api',
            version: '2.24.3'
    )
    implementation(
            group: 'sailpoint',
            name: 'identityiq',
            version: '__iiqVersion__'
    )
    implementation(
            group: 'sailpoint',
            name: 'openconnector',
            version: '__iiqVersion__'
    )

    testImplementation(
            group: 'junit',
            name: 'junit',
            version: '4.2'
    )
}

tasks.compileJava {
    sourceCompatibility = javaReleaseVersion
    targetCompatibility = javaReleaseVersion
    options.encoding = 'UTF-8'

    dependsOn 'checkIIQImplementation'
}


task checkIIQImplementation {
    doFirst {
        def requiredDependency = [group: 'sailpoint', name: 'identityiq', version: '__iiqVersion__']

        try {
            // Explicitly resolve the dependency
            configurations.detachedConfiguration(
                    dependencies.create("${requiredDependency.group}:${requiredDependency.name}:${requiredDependency.version}")
            ).resolve()

            println "Dependency '${requiredDependency.group}:${requiredDependency.name}:${requiredDependency.version}' downloaded successfully."
        } catch (Exception e) {

            def errorMessage = """ERROR: Dependency '${requiredDependency.group}:${requiredDependency.name}:${requiredDependency.version}' is missing!
    > Please read the README.md file for instructions on how to set up the local or GitLab Maven repository.
    > You can visit this link for more information: https://www.npmjs.com/package/@ventum-digital/iiq-plugin-project-generator#sailpoint-identityiq-jars-important
                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"""
            throw new GradleException(errorMessage)
        }
    }
}