diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9501d53f3d..c9a1592a0bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,8 +23,8 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - uses: gradle/wrapper-validation-action@v1 - - uses: gradle/gradle-build-action@v2 + - uses: gradle/actions/wrapper-validation@v3 + - uses: gradle/actions/setup-gradle@v3 with: gradle-home-cache-includes: | caches diff --git a/addOns/addOns.gradle.kts b/addOns/addOns.gradle.kts index 3a04c1ef234..3415386d894 100644 --- a/addOns/addOns.gradle.kts +++ b/addOns/addOns.gradle.kts @@ -18,27 +18,30 @@ import org.zaproxy.gradle.crowdin.CrowdinExtension plugins { eclipse jacoco - id("org.cyclonedx.bom") version "1.8.1" apply false + id("org.cyclonedx.bom") version "1.8.2" apply false id("org.rm3l.datanucleus-gradle-plugin") version "2.0.0" apply false - id("org.zaproxy.add-on") version "0.10.0" apply false + id("org.zaproxy.add-on") version "0.11.0" apply false id("org.zaproxy.crowdin") version "0.4.0" apply false - id("me.champeau.gradle.japicmp") version "0.4.2" apply false + id("me.champeau.gradle.japicmp") version "0.4.3" apply false } description = "Common configuration of the add-ons." -val mandatoryAddOns = listOf( - "callhome", - "network", -) +val mandatoryAddOns = + listOf( + "callhome", + "network", + ) -val parentProjects = listOf( - "webdrivers", -) +val parentProjects = + listOf( + "webdrivers", + ) -val ghReleaseDataProvider = provider { - subprojects.first().zapAddOn.gitHubRelease -} +val ghReleaseDataProvider = + provider { + subprojects.first().zapAddOn.gitHubRelease + } val generateReleaseStateLastCommit by tasks.registering(GenerateReleaseStateLastCommit::class) val handleRelease by tasks.registering(HandleRelease::class) { @@ -59,9 +62,10 @@ val createPullRequestNextDevIter by tasks.registering(CreatePullRequest::class) commitSummary.set("Prepare next dev iteration(s)") commitDescription.set( provider { - "Update version and changelog for:\n" + releasedProjects.map { - " - ${it.zapAddOn.addOnName.get()}" - }.sorted().joinToString("\n") + "Update version and changelog for:\n" + + releasedProjects.map { + " - ${it.zapAddOn.addOnName.get()}" + }.sorted().joinToString("\n") }, ) @@ -73,9 +77,10 @@ val allJarsForBom by tasks.registering { dependsOn(project(":testutils").tasks.named(JavaPlugin.JAR_TASK_NAME)) } -val crowdinExcludedProjects = setOf( - childProjects.get("dev"), -) +val crowdinExcludedProjects = + setOf( + childProjects.get("dev"), + ) subprojects { if (parentProjects.contains(project.name)) { @@ -156,7 +161,9 @@ subprojects { val apiGenClasspath = configurations.detachedConfiguration(dependencies.create(zapGav)) zapAddOn { - releaseLink.set(project.provider { "https://github.com/zaproxy/zap-extensions/releases/${zapAddOn.addOnId.get()}-v@CURRENT_VERSION@" }) + releaseLink.set( + project.provider { "https://github.com/zaproxy/zap-extensions/releases/${zapAddOn.addOnId.get()}-v@CURRENT_VERSION@" }, + ) manifest { zapVersion.set("2.15.0") @@ -233,7 +240,13 @@ subprojects { assets { register("bom") { - file.set(cyclonedxBom.map { project.layout.projectDirectory.file(File(it.destination.get(), "${it.outputName.get()}.json").absolutePath) }) + file.set( + cyclonedxBom.map { + project.layout.projectDirectory.file( + File(it.destination.get(), "${it.outputName.get()}.json").absolutePath, + ) + }, + ) contentType.set("application/json") } } @@ -394,12 +407,13 @@ subprojects { val crowdinUploadSourceFiles by tasks.registering { System.getenv("ADD_ON_IDS")?.let { - val projects = splitAddOnIds(it).map { name -> - val project = subprojects.find { it.name == name } - require(project != null) { "Add-on with project name $name not found." } + val projects = + splitAddOnIds(it).map { name -> + val project = subprojects.find { it.name == name } + require(project != null) { "Add-on with project name $name not found." } - project - }.filter { !crowdinExcludedProjects.contains(it) } + project + }.filter { !crowdinExcludedProjects.contains(it) } projects.forEach { dependsOn(it.tasks.named("crowdinUploadSourceFiles")) @@ -409,11 +423,12 @@ val crowdinUploadSourceFiles by tasks.registering { val createPullRequestRelease by tasks.registering(CreatePullRequest::class) { System.getenv("ADD_ON_IDS")?.let { - val projects = splitAddOnIds(it).map { name -> - val project = subprojects.find { it.name == name } - require(project != null) { "Add-on with project name $name not found." } - project - } + val projects = + splitAddOnIds(it).map { name -> + val project = subprojects.find { it.name == name } + require(project != null) { "Add-on with project name $name not found." } + project + } projects.forEach { dependsOn(it.tasks.named("prepareRelease")) @@ -426,9 +441,10 @@ val createPullRequestRelease by tasks.registering(CreatePullRequest::class) { commitSummary.set("Release add-on(s)") commitDescription.set( provider { - "Release the following add-ons:\n" + projects.map { - " - ${it.zapAddOn.addOnName.get()} version ${it.zapAddOn.addOnVersion.get()}" - }.sorted().joinToString("\n") + "Release the following add-ons:\n" + + projects.map { + " - ${it.zapAddOn.addOnName.get()} version ${it.zapAddOn.addOnVersion.get()}" + }.sorted().joinToString("\n") }, ) } @@ -502,11 +518,9 @@ val jacocoReport by tasks.registering(JacocoReport::class) { } } -fun Project.java(configure: JavaPluginExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("java", configure) +fun Project.java(configure: JavaPluginExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("java", configure) -fun Project.jacoco(configure: JacocoPluginExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("jacoco", configure) +fun Project.jacoco(configure: JacocoPluginExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("jacoco", configure) fun Project.publishing(configure: PublishingExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("publishing", configure) @@ -514,8 +528,7 @@ fun Project.publishing(configure: PublishingExtension.() -> Unit): Unit = val Project.publishing: PublishingExtension get() = (this as ExtensionAware).extensions.getByName("publishing") as PublishingExtension -fun Project.signing(configure: SigningExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("signing", configure) +fun Project.signing(configure: SigningExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("signing", configure) fun Project.zapAddOn(configure: AddOnPluginExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("zapAddOn", configure) @@ -526,8 +539,7 @@ val Project.zapAddOn: AddOnPluginExtension get() = val AddOnPluginExtension.gitHubRelease: GitHubReleaseExtension get() = (this as ExtensionAware).extensions.getByName("gitHubRelease") as GitHubReleaseExtension -fun Project.crowdin(configure: CrowdinExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("crowdin", configure) +fun Project.crowdin(configure: CrowdinExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("crowdin", configure) val Project.crowdin: CrowdinExtension get() = (this as ExtensionAware).extensions.getByName("crowdin") as CrowdinExtension @@ -545,7 +557,10 @@ fun mandatoryProjects() = project } -fun Project.hasProperty(name: String, value: String) = hasProperty(name) && property(name) == value +fun Project.hasProperty( + name: String, + value: String, +) = hasProperty(name) && property(name) == value fun Project.addOnJar(version: String): File { val oldGroup = group diff --git a/addOns/formhandler/formhandler.gradle.kts b/addOns/formhandler/formhandler.gradle.kts index f1c115354a4..0ae9cb17c41 100644 --- a/addOns/formhandler/formhandler.gradle.kts +++ b/addOns/formhandler/formhandler.gradle.kts @@ -1,6 +1,9 @@ import org.zaproxy.gradle.addon.AddOnStatus -description = "This Value Generator Add-on allows a user to define field names and values to be used when submitting values to an app. Fields can be added, modified, enabled/disabled, and deleted." +description = ( + "This Value Generator Add-on allows a user to define field names and values to be used when submitting values to an app. " + + "Fields can be added, modified, enabled/disabled, and deleted." +) zapAddOn { addOnName.set("Value Generator") diff --git a/addOns/openapi/openapi.gradle.kts b/addOns/openapi/openapi.gradle.kts index 00aa40e8d13..1430dc1b53b 100644 --- a/addOns/openapi/openapi.gradle.kts +++ b/addOns/openapi/openapi.gradle.kts @@ -7,7 +7,10 @@ zapAddOn { addOnStatus.set(AddOnStatus.BETA) manifest { - author.set("ZAP Dev Team plus Joanna Bona, Nathalie Bouchahine, Artur Grzesica, Mohammad Kamar, Markus Kiss, Michal Materniak, Marcin Spiewak, and SDA SE Open Industry Solutions") + author.set( + "ZAP Dev Team plus Joanna Bona, Nathalie Bouchahine, Artur Grzesica, Mohammad Kamar, " + + "Markus Kiss, Michal Materniak, Marcin Spiewak, and SDA SE Open Industry Solutions", + ) url.set("https://www.zaproxy.org/docs/desktop/addons/openapi-support/") extensions { register("org.zaproxy.zap.extension.openapi.automation.ExtensionOpenApiAutomation") { diff --git a/addOns/spiderAjax/spiderAjax.gradle.kts b/addOns/spiderAjax/spiderAjax.gradle.kts index f0678cdf5fa..92ab40edbd5 100644 --- a/addOns/spiderAjax/spiderAjax.gradle.kts +++ b/addOns/spiderAjax/spiderAjax.gradle.kts @@ -52,10 +52,11 @@ zapAddOn { } } - val apiGenClasspath = configurations.detachedConfiguration( - dependencies.create("org.zaproxy:zap:${zapVersion.get()}"), - dependencies.create(parent!!.childProjects.get("selenium")!!), - ) + val apiGenClasspath = + configurations.detachedConfiguration( + dependencies.create("org.zaproxy:zap:${zapVersion.get()}"), + dependencies.create(parent!!.childProjects.get("selenium")!!), + ) apiClientGen { api.set("org.zaproxy.zap.extension.spiderAjax.AjaxSpiderAPI") diff --git a/addOns/webdrivers/webdrivers.gradle.kts b/addOns/webdrivers/webdrivers.gradle.kts index 3ffd6ee7723..ce5b764c097 100644 --- a/addOns/webdrivers/webdrivers.gradle.kts +++ b/addOns/webdrivers/webdrivers.gradle.kts @@ -8,14 +8,19 @@ description = "Common configuration of the WebDriver add-ons." val geckodriverVersion = "0.34.0" val chromeDriverVersion = "126.0.6478.61" -fun configureDownloadTask(outputDir: File, targetOs: DownloadWebDriver.OS, task: DownloadWebDriver) { +fun configureDownloadTask( + outputDir: File, + targetOs: DownloadWebDriver.OS, + task: DownloadWebDriver, +) { val geckodriver = task.browser.get() == DownloadWebDriver.Browser.FIREFOX var path = "webdriver/" - path += when (targetOs) { - DownloadWebDriver.OS.LINUX -> "linux" - DownloadWebDriver.OS.MAC -> "macos" - DownloadWebDriver.OS.WIN -> "windows" - } + path += + when (targetOs) { + DownloadWebDriver.OS.LINUX -> "linux" + DownloadWebDriver.OS.MAC -> "macos" + DownloadWebDriver.OS.WIN -> "windows" + } path += "/" path += getArchPath(task) path += "/" @@ -64,12 +69,13 @@ subprojects { val webdriversDir = layout.buildDirectory.dir("webdrivers") val targetOs = project.extra["targetOs"] as DownloadWebDriver.OS - val downloadTasks = tasks.withType().also { - it.configureEach { - configureDownloadTask(webdriversDir.get().asFile, targetOs, this) - webdriverClasspath.from(wdm) + val downloadTasks = + tasks.withType().also { + it.configureEach { + configureDownloadTask(webdriversDir.get().asFile, targetOs, this) + webdriverClasspath.from(wdm) + } } - } sourceSets["main"].output.dir(mapOf("builtBy" to downloadTasks), webdriversDir) @@ -90,8 +96,7 @@ fun Project.zapAddOn(configure: AddOnPluginExtension.() -> Unit): Unit = fun AddOnPluginExtension.manifest(configure: ManifestExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("manifest", configure) -fun Project.crowdin(configure: CrowdinExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("crowdin", configure) +fun Project.crowdin(configure: CrowdinExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("crowdin", configure) val Project.crowdin: CrowdinExtension get() = (this as ExtensionAware).extensions.getByName("crowdin") as CrowdinExtension diff --git a/build.gradle.kts b/build.gradle.kts index 7c0e3588b1a..65567fa73fc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.zaproxy.gradle.spotless.ValidateImports plugins { id("com.diffplug.spotless") - id("org.zaproxy.common") version "0.2.0" apply false + id("org.zaproxy.common") version "0.3.0" apply false id("com.github.ben-manes.versions") version "0.50.0" id("org.sonarqube") version "4.3.0.3225" id("net.ltgt.errorprone") version "3.1.0" @@ -11,12 +11,13 @@ plugins { apply(from = "$rootDir/gradle/ci.gradle.kts") -val validateImports = ValidateImports( - mapOf( - "import org.apache.commons.lang." to - "Import/use classes from Commons Lang 3, instead of Lang 2.", - ), -) +val validateImports = + ValidateImports( + mapOf( + "import org.apache.commons.lang." to + "Import/use classes from Commons Lang 3, instead of Lang 2.", + ), + ) allprojects { apply(plugin = "com.diffplug.spotless") @@ -77,5 +78,4 @@ sonarqube { } } -fun Project.java(configure: JavaPluginExtension.() -> Unit): Unit = - (this as ExtensionAware).extensions.configure("java", configure) +fun Project.java(configure: JavaPluginExtension.() -> Unit): Unit = (this as ExtensionAware).extensions.configure("java", configure) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 766b96ab764..09d287ab047 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,7 +1,7 @@ plugins { `kotlin-dsl` - id("com.diffplug.spotless") version "6.20.0" - id("org.zaproxy.common") version "0.2.0" + id("com.diffplug.spotless") version "6.25.0" + id("org.zaproxy.common") version "0.3.0" } repositories { @@ -23,5 +23,5 @@ dependencies { implementation("io.github.bonigarcia:webdrivermanager:5.7.0") { exclude("com.fasterxml.jackson.core") } - implementation("com.diffplug.spotless:spotless-plugin-gradle:6.20.0") + implementation("com.diffplug.spotless:spotless-plugin-gradle:6.25.0") } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd491770..e6441136f3d 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a7a990ab2a8..515ab9d5f18 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=c16d517b50dd28b3f5838f0e844b7520b8f1eb610f2f29de7e4e04a1b7c9c79b -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip +distributionSha256Sum=f8b4f4772d302c8ff580bc40d0f56e715de69b163546944f787c87abf209c961 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a42690..b740cf13397 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f135..25da30dbdee 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/settings.gradle.kts b/settings.gradle.kts index 9ab7e7ac638..046c188af5b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -24,105 +24,109 @@ include(addOnsProjectName) include("testutils") // Keep the add-ons in alphabetic order. -var addOns = listOf( - "accessControl", - "alertFilters", - "allinonenotes", - "ascanrules", - "ascanrulesAlpha", - "ascanrulesBeta", - "authhelper", - "authstats", - "automation", - "beanshell", - "browserView", - "bruteforce", - "bugtracker", - "callgraph", - "callhome", - "client", - "commonlib", - "coreLang", - "custompayloads", - "database", - "dev", - "diff", - "directorylistv1", - "directorylistv2_3", - "directorylistv2_3_lc", - "domxss", - "encoder", - "evalvillain", - "exim", - "formhandler", - "frontendscanner", - "fuzz", - "fuzzdb", - "gettingStarted", - "graaljs", - "graphql", - "groovy", - "grpc", - "highlighter", - "imagelocationscanner", - "invoke", - "jruby", - "jsonview", - "jython", - "kotlin", - "network", - "oast", - "onlineMenu", - "openapi", - "packpentester", - "packscanrules", - "paramdigger", - "plugnhack", - "portscan", - "postman", - "pscanrules", - "pscanrulesAlpha", - "pscanrulesBeta", - "quickstart", - "regextester", - "replacer", - "reports", - "requester", - "retest", - "retire", - "reveal", - "revisit", - "saml", - "scripts", - "selenium", - "sequence", - "simpleexample", - "soap", - "spider", - "spiderAjax", - "sqliplugin", - "sse", - "svndigger", - "tips", - "todo", - "tokengen", - "treetools", - "viewstate", - "wappalyzer", - "webdrivers", - "webdrivers:webdriverlinux", - "webdrivers:webdrivermacos", - "webdrivers:webdriverwindows", - "websocket", - "webuipoc", - "zest", -) +var addOns = + listOf( + "accessControl", + "alertFilters", + "allinonenotes", + "ascanrules", + "ascanrulesAlpha", + "ascanrulesBeta", + "authhelper", + "authstats", + "automation", + "beanshell", + "browserView", + "bruteforce", + "bugtracker", + "callgraph", + "callhome", + "client", + "commonlib", + "coreLang", + "custompayloads", + "database", + "dev", + "diff", + "directorylistv1", + "directorylistv2_3", + "directorylistv2_3_lc", + "domxss", + "encoder", + "evalvillain", + "exim", + "formhandler", + "frontendscanner", + "fuzz", + "fuzzdb", + "gettingStarted", + "graaljs", + "graphql", + "groovy", + "grpc", + "highlighter", + "imagelocationscanner", + "invoke", + "jruby", + "jsonview", + "jython", + "kotlin", + "network", + "oast", + "onlineMenu", + "openapi", + "packpentester", + "packscanrules", + "paramdigger", + "plugnhack", + "portscan", + "postman", + "pscanrules", + "pscanrulesAlpha", + "pscanrulesBeta", + "quickstart", + "regextester", + "replacer", + "reports", + "requester", + "retest", + "retire", + "reveal", + "revisit", + "saml", + "scripts", + "selenium", + "sequence", + "simpleexample", + "soap", + "spider", + "spiderAjax", + "sqliplugin", + "sse", + "svndigger", + "tips", + "todo", + "tokengen", + "treetools", + "viewstate", + "wappalyzer", + "webdrivers", + "webdrivers:webdriverlinux", + "webdrivers:webdrivermacos", + "webdrivers:webdriverwindows", + "websocket", + "webuipoc", + "zest", + ) addOns.forEach { include("$addOnsProjectName:$it") } rootProject.children.forEach { project -> setUpProject(settingsDir, project) } -fun setUpProject(parentDir: File, project: ProjectDescriptor) { +fun setUpProject( + parentDir: File, + project: ProjectDescriptor, +) { project.projectDir = File(parentDir, project.name) project.buildFileName = "${project.name}.gradle.kts"