From 11d9abd30ffa725eb07f2d98f2af8eda8fc3e59c Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Mon, 6 Nov 2023 22:30:24 +0100 Subject: [PATCH] build: Move all VCS plugins to separate Gradle projects This resolves #6602. Signed-off-by: Sebastian Schuberth --- cli/build.gradle.kts | 1 + cli/src/funTest/kotlin/AnalyzerFunTest.kt | 2 +- downloader/build.gradle.kts | 12 +---- .../src/main/kotlin/VersionControlSystem.kt | 2 +- ...iewtoolkit.downloader.VersionControlSystem | 4 -- .../test/kotlin/VersionControlSystemTest.kt | 2 +- .../src/funTest/kotlin/GradleFunTest.kt | 2 +- .../src/funTest/kotlin/GradleFunTest.kt | 2 +- .../sbt/src/funTest/kotlin/SbtFunTest.kt | 2 +- .../version-control-systems/build.gradle.kts | 23 +++++++++ .../git/build.gradle.kts | 45 ++++++++++++++++++ .../src/funTest/kotlin}/GitDownloadFunTest.kt | 2 +- .../git/src/funTest/kotlin}/GitFunTest.kt | 2 +- .../funTest/kotlin}/GitRepoDownloadFunTest.kt | 2 +- .../funTest/kotlin}/GitWorkingTreeFunTest.kt | 4 +- .../git/src/main/kotlin}/Git.kt | 2 +- .../git/src/main/kotlin}/GitRepo.kt | 2 +- .../git/src/main/kotlin}/GitWorkingTree.kt | 2 +- ...iewtoolkit.downloader.VersionControlSystem | 2 + .../git/src/test/kotlin}/GitTest.kt | 2 +- .../mercurial/build.gradle.kts | 37 ++++++++++++++ .../assets/lz4revlog-2018-01-03-hg.zip | Bin .../kotlin}/MercurialDownloadFunTest.kt | 2 +- .../kotlin}/MercurialWorkingTreeFunTest.kt | 2 +- .../mercurial/src/main/kotlin}/Mercurial.kt | 2 +- .../src/main/kotlin}/MercurialWorkingTree.kt | 2 +- ...iewtoolkit.downloader.VersionControlSystem | 1 + .../subversion/build.gradle.kts | 38 +++++++++++++++ .../assets/docutils-2018-01-03-svn-trunk.zip | Bin .../kotlin}/SubversionDownloadFunTest.kt | 2 +- .../kotlin}/SubversionWorkingTreeFunTest.kt | 2 +- .../subversion/src/main/kotlin}/Subversion.kt | 2 +- .../src/main/kotlin}/SubversionWorkingTree.kt | 2 +- ...iewtoolkit.downloader.VersionControlSystem | 1 + scanner/build.gradle.kts | 1 + utils/test/build.gradle.kts | 1 + 36 files changed, 174 insertions(+), 38 deletions(-) delete mode 100644 downloader/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem create mode 100644 plugins/version-control-systems/build.gradle.kts create mode 100644 plugins/version-control-systems/git/build.gradle.kts rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/git/src/funTest/kotlin}/GitDownloadFunTest.kt (98%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/git/src/funTest/kotlin}/GitFunTest.kt (98%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/git/src/funTest/kotlin}/GitRepoDownloadFunTest.kt (98%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/git/src/funTest/kotlin}/GitWorkingTreeFunTest.kt (97%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/git/src/main/kotlin}/Git.kt (99%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/git/src/main/kotlin}/GitRepo.kt (99%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/git/src/main/kotlin}/GitWorkingTree.kt (99%) create mode 100644 plugins/version-control-systems/git/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem rename {downloader/src/test/kotlin/vcs => plugins/version-control-systems/git/src/test/kotlin}/GitTest.kt (98%) create mode 100644 plugins/version-control-systems/mercurial/build.gradle.kts rename {downloader => plugins/version-control-systems/mercurial}/src/funTest/assets/lz4revlog-2018-01-03-hg.zip (100%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/mercurial/src/funTest/kotlin}/MercurialDownloadFunTest.kt (98%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/mercurial/src/funTest/kotlin}/MercurialWorkingTreeFunTest.kt (98%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/mercurial/src/main/kotlin}/Mercurial.kt (98%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/mercurial/src/main/kotlin}/MercurialWorkingTree.kt (97%) create mode 100644 plugins/version-control-systems/mercurial/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem create mode 100644 plugins/version-control-systems/subversion/build.gradle.kts rename {downloader => plugins/version-control-systems/subversion}/src/funTest/assets/docutils-2018-01-03-svn-trunk.zip (100%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/subversion/src/funTest/kotlin}/SubversionDownloadFunTest.kt (98%) rename {downloader/src/funTest/kotlin/vcs => plugins/version-control-systems/subversion/src/funTest/kotlin}/SubversionWorkingTreeFunTest.kt (98%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/subversion/src/main/kotlin}/Subversion.kt (99%) rename {downloader/src/main/kotlin/vcs => plugins/version-control-systems/subversion/src/main/kotlin}/SubversionWorkingTree.kt (97%) create mode 100644 plugins/version-control-systems/subversion/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem diff --git a/cli/build.gradle.kts b/cli/build.gradle.kts index 2dfcb76d98a51..243716452acaf 100644 --- a/cli/build.gradle.kts +++ b/cli/build.gradle.kts @@ -47,6 +47,7 @@ dependencies { "pluginClasspath"(platform(project(":plugins:package-managers"))) "pluginClasspath"(platform(project(":plugins:reporters"))) "pluginClasspath"(platform(project(":plugins:scanners"))) + "pluginClasspath"(platform(project(":plugins:version-control-systems"))) funTestImplementation(platform(project(":plugins:commands"))) funTestImplementation(platform(project(":plugins:package-managers"))) diff --git a/cli/src/funTest/kotlin/AnalyzerFunTest.kt b/cli/src/funTest/kotlin/AnalyzerFunTest.kt index 9b142aa2d9e06..206ba0a0ce938 100644 --- a/cli/src/funTest/kotlin/AnalyzerFunTest.kt +++ b/cli/src/funTest/kotlin/AnalyzerFunTest.kt @@ -29,7 +29,6 @@ import java.util.concurrent.TimeUnit import org.ossreviewtoolkit.analyzer.Analyzer import org.ossreviewtoolkit.analyzer.PackageManager import org.ossreviewtoolkit.analyzer.managers.analyze -import org.ossreviewtoolkit.downloader.vcs.GitRepo import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.VcsInfo import org.ossreviewtoolkit.model.VcsType @@ -37,6 +36,7 @@ import org.ossreviewtoolkit.model.config.AnalyzerConfiguration import org.ossreviewtoolkit.model.config.PackageManagerConfiguration import org.ossreviewtoolkit.model.config.RepositoryConfiguration import org.ossreviewtoolkit.model.toYaml +import org.ossreviewtoolkit.plugins.versioncontrolsystems.git.GitRepo import org.ossreviewtoolkit.utils.test.getAssetFile import org.ossreviewtoolkit.utils.test.matchExpectedResult import org.ossreviewtoolkit.utils.test.patchActualResult diff --git a/downloader/build.gradle.kts b/downloader/build.gradle.kts index 058df381c5b92..66585204f7020 100644 --- a/downloader/build.gradle.kts +++ b/downloader/build.gradle.kts @@ -27,17 +27,7 @@ dependencies { implementation(project(":utils:ort-utils")) - implementation(libs.jgit) - implementation(libs.jgitSshApacheAgent) { - exclude(group = "org.apache.sshd", module = "sshd-sftp") - .because("it is not required for cloning via SSH and causes issues with GraalVM native images") - } - implementation(libs.svnkit) { - exclude(group = "org.apache.sshd", module = "sshd-core") - .because("it is included in JGit's sshd-osgi dependency") - exclude(group = "org.apache.sshd", module = "sshd-common") - .because("it is included in JGit's sshd-osgi dependency") - } + funTestImplementation(platform(project(":plugins:version-control-systems"))) testImplementation(libs.mockk) } diff --git a/downloader/src/main/kotlin/VersionControlSystem.kt b/downloader/src/main/kotlin/VersionControlSystem.kt index 3e9b996efc93c..ccaea97f572d3 100644 --- a/downloader/src/main/kotlin/VersionControlSystem.kt +++ b/downloader/src/main/kotlin/VersionControlSystem.kt @@ -156,7 +156,7 @@ abstract class VersionControlSystem( /** * Return glob patterns for files that should be checkout out in addition to explicit sparse checkout paths. */ - internal fun getSparseCheckoutGlobPatterns(): List { + fun getSparseCheckoutGlobPatterns(): List { val globPatterns = mutableListOf("*$ORT_REPO_CONFIG_FILENAME") val licensePatterns = LicenseFilePatterns.getInstance() return licensePatterns.allLicenseFilenames.generateCapitalizationVariants().mapTo(globPatterns) { "**/$it" } diff --git a/downloader/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem b/downloader/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem deleted file mode 100644 index 9fd1883c4abbc..0000000000000 --- a/downloader/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem +++ /dev/null @@ -1,4 +0,0 @@ -org.ossreviewtoolkit.downloader.vcs.Git -org.ossreviewtoolkit.downloader.vcs.GitRepo -org.ossreviewtoolkit.downloader.vcs.Mercurial -org.ossreviewtoolkit.downloader.vcs.Subversion diff --git a/downloader/src/test/kotlin/VersionControlSystemTest.kt b/downloader/src/test/kotlin/VersionControlSystemTest.kt index ccc15f1078b57..c3cea605b566b 100644 --- a/downloader/src/test/kotlin/VersionControlSystemTest.kt +++ b/downloader/src/test/kotlin/VersionControlSystemTest.kt @@ -30,10 +30,10 @@ import java.io.File import java.io.IOException import java.lang.UnsupportedOperationException -import org.ossreviewtoolkit.downloader.vcs.Git import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.VcsInfo import org.ossreviewtoolkit.model.VcsType +import org.ossreviewtoolkit.plugins.versioncontrolsystems.git.Git import org.ossreviewtoolkit.utils.common.CommandLineTool class VersionControlSystemTest : WordSpec({ diff --git a/plugins/package-managers/gradle-inspector/src/funTest/kotlin/GradleFunTest.kt b/plugins/package-managers/gradle-inspector/src/funTest/kotlin/GradleFunTest.kt index 5a179d8cb5a9f..4ccdd70acc00b 100644 --- a/plugins/package-managers/gradle-inspector/src/funTest/kotlin/GradleFunTest.kt +++ b/plugins/package-managers/gradle-inspector/src/funTest/kotlin/GradleFunTest.kt @@ -29,8 +29,8 @@ import io.kotest.matchers.should import org.ossreviewtoolkit.analyzer.managers.create import org.ossreviewtoolkit.analyzer.managers.resolveSingleProject -import org.ossreviewtoolkit.downloader.vcs.Git import org.ossreviewtoolkit.model.toYaml +import org.ossreviewtoolkit.plugins.versioncontrolsystems.git.Git import org.ossreviewtoolkit.utils.common.Os import org.ossreviewtoolkit.utils.common.ProcessCapture import org.ossreviewtoolkit.utils.test.ExpensiveTag diff --git a/plugins/package-managers/gradle/src/funTest/kotlin/GradleFunTest.kt b/plugins/package-managers/gradle/src/funTest/kotlin/GradleFunTest.kt index 15234e160f47b..c9eeee6ee6810 100644 --- a/plugins/package-managers/gradle/src/funTest/kotlin/GradleFunTest.kt +++ b/plugins/package-managers/gradle/src/funTest/kotlin/GradleFunTest.kt @@ -29,8 +29,8 @@ import io.kotest.matchers.should import org.ossreviewtoolkit.analyzer.managers.create import org.ossreviewtoolkit.analyzer.managers.resolveSingleProject -import org.ossreviewtoolkit.downloader.vcs.Git import org.ossreviewtoolkit.model.toYaml +import org.ossreviewtoolkit.plugins.versioncontrolsystems.git.Git import org.ossreviewtoolkit.utils.common.Os import org.ossreviewtoolkit.utils.common.ProcessCapture import org.ossreviewtoolkit.utils.test.ExpensiveTag diff --git a/plugins/package-managers/sbt/src/funTest/kotlin/SbtFunTest.kt b/plugins/package-managers/sbt/src/funTest/kotlin/SbtFunTest.kt index c3fabf71ffee3..d72d5a8a6b4a0 100644 --- a/plugins/package-managers/sbt/src/funTest/kotlin/SbtFunTest.kt +++ b/plugins/package-managers/sbt/src/funTest/kotlin/SbtFunTest.kt @@ -23,8 +23,8 @@ import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe import org.ossreviewtoolkit.analyzer.managers.analyze -import org.ossreviewtoolkit.downloader.vcs.Git import org.ossreviewtoolkit.model.toYaml +import org.ossreviewtoolkit.plugins.versioncontrolsystems.git.Git import org.ossreviewtoolkit.utils.test.getAssetFile import org.ossreviewtoolkit.utils.test.matchExpectedResult import org.ossreviewtoolkit.utils.test.patchActualResult diff --git a/plugins/version-control-systems/build.gradle.kts b/plugins/version-control-systems/build.gradle.kts new file mode 100644 index 0000000000000..bbfb2a35fcb17 --- /dev/null +++ b/plugins/version-control-systems/build.gradle.kts @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2023 The ORT Project Authors (see ) + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * License-Filename: LICENSE + */ + +plugins { + // Apply precompiled plugins. + id("ort-plugins-conventions") +} diff --git a/plugins/version-control-systems/git/build.gradle.kts b/plugins/version-control-systems/git/build.gradle.kts new file mode 100644 index 0000000000000..e6b0482fd2838 --- /dev/null +++ b/plugins/version-control-systems/git/build.gradle.kts @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2023 The ORT Project Authors (see ) + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * License-Filename: LICENSE + */ + +plugins { + // Apply precompiled plugins. + id("ort-library-conventions") +} + +dependencies { + api(project(":downloader")) + api(project(":model")) + api(project(":utils:common-utils")) { + because("This is a CommandLineTool.") + } + + api(libs.semver4j) { + because("This is a CommandLineTool.") + } + + implementation(project(":utils:ort-utils")) + + implementation(libs.jgit) + implementation(libs.jgitSshApacheAgent) { + exclude(group = "org.apache.sshd", module = "sshd-sftp") + .because("it is not required for cloning via SSH and causes issues with GraalVM native images") + } + + testImplementation(libs.mockk) +} diff --git a/downloader/src/funTest/kotlin/vcs/GitDownloadFunTest.kt b/plugins/version-control-systems/git/src/funTest/kotlin/GitDownloadFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/GitDownloadFunTest.kt rename to plugins/version-control-systems/git/src/funTest/kotlin/GitDownloadFunTest.kt index d96ff64c6f3d9..073475de6aa7a 100644 --- a/downloader/src/funTest/kotlin/vcs/GitDownloadFunTest.kt +++ b/plugins/version-control-systems/git/src/funTest/kotlin/GitDownloadFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import io.kotest.assertions.throwables.shouldThrow import io.kotest.core.spec.style.StringSpec diff --git a/downloader/src/funTest/kotlin/vcs/GitFunTest.kt b/plugins/version-control-systems/git/src/funTest/kotlin/GitFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/GitFunTest.kt rename to plugins/version-control-systems/git/src/funTest/kotlin/GitFunTest.kt index fe47eb1f8436f..e28904e0c3a30 100644 --- a/downloader/src/funTest/kotlin/vcs/GitFunTest.kt +++ b/plugins/version-control-systems/git/src/funTest/kotlin/GitFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import io.kotest.core.spec.style.WordSpec import io.kotest.engine.spec.tempdir diff --git a/downloader/src/funTest/kotlin/vcs/GitRepoDownloadFunTest.kt b/plugins/version-control-systems/git/src/funTest/kotlin/GitRepoDownloadFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/GitRepoDownloadFunTest.kt rename to plugins/version-control-systems/git/src/funTest/kotlin/GitRepoDownloadFunTest.kt index 04735b18bcb43..cbe00e455293b 100644 --- a/downloader/src/funTest/kotlin/vcs/GitRepoDownloadFunTest.kt +++ b/plugins/version-control-systems/git/src/funTest/kotlin/GitRepoDownloadFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import io.kotest.core.spec.Spec import io.kotest.core.spec.style.StringSpec diff --git a/downloader/src/funTest/kotlin/vcs/GitWorkingTreeFunTest.kt b/plugins/version-control-systems/git/src/funTest/kotlin/GitWorkingTreeFunTest.kt similarity index 97% rename from downloader/src/funTest/kotlin/vcs/GitWorkingTreeFunTest.kt rename to plugins/version-control-systems/git/src/funTest/kotlin/GitWorkingTreeFunTest.kt index 43493b1a6137f..ea7e4d895fe7f 100644 --- a/downloader/src/funTest/kotlin/vcs/GitWorkingTreeFunTest.kt +++ b/plugins/version-control-systems/git/src/funTest/kotlin/GitWorkingTreeFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import io.kotest.core.spec.style.StringSpec import io.kotest.engine.spec.tempdir @@ -86,7 +86,7 @@ class GitWorkingTreeFunTest : StringSpec({ "plugins/package-managers/python/src/funTest/assets/projects/external/spdx-tools-python", "plugins/package-managers/sbt/src/funTest/assets/projects/external/sbt-multi-project-example", "plugins/package-managers/stack/src/funTest/assets/projects/external/quickcheck-state-machine" - ).associateWith { VersionControlSystem.getPathInfo(File("../$it")) } + ).associateWith { VersionControlSystem.getPathInfo(File("../../../$it")) } git.getWorkingTree(File("..")).getNested() shouldBe expectedSubmodules } diff --git a/downloader/src/main/kotlin/vcs/Git.kt b/plugins/version-control-systems/git/src/main/kotlin/Git.kt similarity index 99% rename from downloader/src/main/kotlin/vcs/Git.kt rename to plugins/version-control-systems/git/src/main/kotlin/Git.kt index 293ba64843f37..f0e65ad337117 100644 --- a/downloader/src/main/kotlin/vcs/Git.kt +++ b/plugins/version-control-systems/git/src/main/kotlin/Git.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import java.io.File import java.io.IOException diff --git a/downloader/src/main/kotlin/vcs/GitRepo.kt b/plugins/version-control-systems/git/src/main/kotlin/GitRepo.kt similarity index 99% rename from downloader/src/main/kotlin/vcs/GitRepo.kt rename to plugins/version-control-systems/git/src/main/kotlin/GitRepo.kt index 3eb008eabcdc5..614af645f97ee 100644 --- a/downloader/src/main/kotlin/vcs/GitRepo.kt +++ b/plugins/version-control-systems/git/src/main/kotlin/GitRepo.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty diff --git a/downloader/src/main/kotlin/vcs/GitWorkingTree.kt b/plugins/version-control-systems/git/src/main/kotlin/GitWorkingTree.kt similarity index 99% rename from downloader/src/main/kotlin/vcs/GitWorkingTree.kt rename to plugins/version-control-systems/git/src/main/kotlin/GitWorkingTree.kt index 33494b522b965..cd67191ef59d6 100644 --- a/downloader/src/main/kotlin/vcs/GitWorkingTree.kt +++ b/plugins/version-control-systems/git/src/main/kotlin/GitWorkingTree.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import java.io.File import java.io.IOException diff --git a/plugins/version-control-systems/git/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem b/plugins/version-control-systems/git/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem new file mode 100644 index 0000000000000..afa98de81107d --- /dev/null +++ b/plugins/version-control-systems/git/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem @@ -0,0 +1,2 @@ +org.ossreviewtoolkit.plugins.versioncontrolsystems.git.Git +org.ossreviewtoolkit.plugins.versioncontrolsystems.git.GitRepo diff --git a/downloader/src/test/kotlin/vcs/GitTest.kt b/plugins/version-control-systems/git/src/test/kotlin/GitTest.kt similarity index 98% rename from downloader/src/test/kotlin/vcs/GitTest.kt rename to plugins/version-control-systems/git/src/test/kotlin/GitTest.kt index 893e2a7238d5d..afae8edca437b 100644 --- a/downloader/src/test/kotlin/vcs/GitTest.kt +++ b/plugins/version-control-systems/git/src/test/kotlin/GitTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.git import io.kotest.assertions.throwables.shouldThrow import io.kotest.core.spec.style.WordSpec diff --git a/plugins/version-control-systems/mercurial/build.gradle.kts b/plugins/version-control-systems/mercurial/build.gradle.kts new file mode 100644 index 0000000000000..7dfece06eda4d --- /dev/null +++ b/plugins/version-control-systems/mercurial/build.gradle.kts @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 The ORT Project Authors (see ) + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * License-Filename: LICENSE + */ + +plugins { + // Apply precompiled plugins. + id("ort-library-conventions") +} + +dependencies { + api(project(":downloader")) + api(project(":model")) + api(project(":utils:common-utils")) { + because("This is a CommandLineTool.") + } + + api(libs.semver4j) { + because("This is a CommandLineTool.") + } + + implementation(project(":utils:ort-utils")) +} diff --git a/downloader/src/funTest/assets/lz4revlog-2018-01-03-hg.zip b/plugins/version-control-systems/mercurial/src/funTest/assets/lz4revlog-2018-01-03-hg.zip similarity index 100% rename from downloader/src/funTest/assets/lz4revlog-2018-01-03-hg.zip rename to plugins/version-control-systems/mercurial/src/funTest/assets/lz4revlog-2018-01-03-hg.zip diff --git a/downloader/src/funTest/kotlin/vcs/MercurialDownloadFunTest.kt b/plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialDownloadFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/MercurialDownloadFunTest.kt rename to plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialDownloadFunTest.kt index 27fcb4ccd27bc..31c250b14e5d2 100644 --- a/downloader/src/funTest/kotlin/vcs/MercurialDownloadFunTest.kt +++ b/plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialDownloadFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.mercurial import io.kotest.core.spec.style.StringSpec import io.kotest.core.test.TestCase diff --git a/downloader/src/funTest/kotlin/vcs/MercurialWorkingTreeFunTest.kt b/plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialWorkingTreeFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/MercurialWorkingTreeFunTest.kt rename to plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialWorkingTreeFunTest.kt index 7125f9233261f..4810b5f8de225 100644 --- a/downloader/src/funTest/kotlin/vcs/MercurialWorkingTreeFunTest.kt +++ b/plugins/version-control-systems/mercurial/src/funTest/kotlin/MercurialWorkingTreeFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.mercurial import io.kotest.core.spec.style.StringSpec import io.kotest.engine.spec.tempdir diff --git a/downloader/src/main/kotlin/vcs/Mercurial.kt b/plugins/version-control-systems/mercurial/src/main/kotlin/Mercurial.kt similarity index 98% rename from downloader/src/main/kotlin/vcs/Mercurial.kt rename to plugins/version-control-systems/mercurial/src/main/kotlin/Mercurial.kt index 445e0a39c608b..f605a78cf294a 100644 --- a/downloader/src/main/kotlin/vcs/Mercurial.kt +++ b/plugins/version-control-systems/mercurial/src/main/kotlin/Mercurial.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.mercurial import java.io.File diff --git a/downloader/src/main/kotlin/vcs/MercurialWorkingTree.kt b/plugins/version-control-systems/mercurial/src/main/kotlin/MercurialWorkingTree.kt similarity index 97% rename from downloader/src/main/kotlin/vcs/MercurialWorkingTree.kt rename to plugins/version-control-systems/mercurial/src/main/kotlin/MercurialWorkingTree.kt index b455d18e13cce..6004f6ec2e5bd 100644 --- a/downloader/src/main/kotlin/vcs/MercurialWorkingTree.kt +++ b/plugins/version-control-systems/mercurial/src/main/kotlin/MercurialWorkingTree.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.mercurial import java.io.File diff --git a/plugins/version-control-systems/mercurial/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem b/plugins/version-control-systems/mercurial/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem new file mode 100644 index 0000000000000..844294e265439 --- /dev/null +++ b/plugins/version-control-systems/mercurial/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem @@ -0,0 +1 @@ +org.ossreviewtoolkit.plugins.versioncontrolsystems.mercurial.Mercurial diff --git a/plugins/version-control-systems/subversion/build.gradle.kts b/plugins/version-control-systems/subversion/build.gradle.kts new file mode 100644 index 0000000000000..bd7ae73981b99 --- /dev/null +++ b/plugins/version-control-systems/subversion/build.gradle.kts @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2023 The ORT Project Authors (see ) + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * License-Filename: LICENSE + */ + +plugins { + // Apply precompiled plugins. + id("ort-library-conventions") +} + +dependencies { + api(project(":downloader")) + api(project(":model")) + + implementation(project(":utils:common-utils")) + implementation(project(":utils:ort-utils")) + + implementation(libs.svnkit) { + exclude(group = "org.apache.sshd", module = "sshd-core") + .because("it is included in JGit's sshd-osgi dependency") + exclude(group = "org.apache.sshd", module = "sshd-common") + .because("it is included in JGit's sshd-osgi dependency") + } +} diff --git a/downloader/src/funTest/assets/docutils-2018-01-03-svn-trunk.zip b/plugins/version-control-systems/subversion/src/funTest/assets/docutils-2018-01-03-svn-trunk.zip similarity index 100% rename from downloader/src/funTest/assets/docutils-2018-01-03-svn-trunk.zip rename to plugins/version-control-systems/subversion/src/funTest/assets/docutils-2018-01-03-svn-trunk.zip diff --git a/downloader/src/funTest/kotlin/vcs/SubversionDownloadFunTest.kt b/plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionDownloadFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/SubversionDownloadFunTest.kt rename to plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionDownloadFunTest.kt index d84e0c2e63936..2bdcffa782fb8 100644 --- a/downloader/src/funTest/kotlin/vcs/SubversionDownloadFunTest.kt +++ b/plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionDownloadFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.subversion import io.kotest.core.spec.style.StringSpec import io.kotest.core.test.TestCase diff --git a/downloader/src/funTest/kotlin/vcs/SubversionWorkingTreeFunTest.kt b/plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionWorkingTreeFunTest.kt similarity index 98% rename from downloader/src/funTest/kotlin/vcs/SubversionWorkingTreeFunTest.kt rename to plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionWorkingTreeFunTest.kt index 5685abc163ac0..a3f705569b022 100644 --- a/downloader/src/funTest/kotlin/vcs/SubversionWorkingTreeFunTest.kt +++ b/plugins/version-control-systems/subversion/src/funTest/kotlin/SubversionWorkingTreeFunTest.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.subversion import io.kotest.core.spec.style.StringSpec import io.kotest.engine.spec.tempdir diff --git a/downloader/src/main/kotlin/vcs/Subversion.kt b/plugins/version-control-systems/subversion/src/main/kotlin/Subversion.kt similarity index 99% rename from downloader/src/main/kotlin/vcs/Subversion.kt rename to plugins/version-control-systems/subversion/src/main/kotlin/Subversion.kt index ddc70acd31464..4d33454451c41 100644 --- a/downloader/src/main/kotlin/vcs/Subversion.kt +++ b/plugins/version-control-systems/subversion/src/main/kotlin/Subversion.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.subversion import java.io.File import java.net.InetSocketAddress diff --git a/downloader/src/main/kotlin/vcs/SubversionWorkingTree.kt b/plugins/version-control-systems/subversion/src/main/kotlin/SubversionWorkingTree.kt similarity index 97% rename from downloader/src/main/kotlin/vcs/SubversionWorkingTree.kt rename to plugins/version-control-systems/subversion/src/main/kotlin/SubversionWorkingTree.kt index a83fc12bf3d91..fd791a1643933 100644 --- a/downloader/src/main/kotlin/vcs/SubversionWorkingTree.kt +++ b/plugins/version-control-systems/subversion/src/main/kotlin/SubversionWorkingTree.kt @@ -17,7 +17,7 @@ * License-Filename: LICENSE */ -package org.ossreviewtoolkit.downloader.vcs +package org.ossreviewtoolkit.plugins.versioncontrolsystems.subversion import java.io.File diff --git a/plugins/version-control-systems/subversion/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem b/plugins/version-control-systems/subversion/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem new file mode 100644 index 0000000000000..4eee8dd95ed90 --- /dev/null +++ b/plugins/version-control-systems/subversion/src/main/resources/META-INF/services/org.ossreviewtoolkit.downloader.VersionControlSystem @@ -0,0 +1 @@ +org.ossreviewtoolkit.plugins.versioncontrolsystems.subversion.Subversion diff --git a/scanner/build.gradle.kts b/scanner/build.gradle.kts index 177b700bf800d..55ff38f4da115 100644 --- a/scanner/build.gradle.kts +++ b/scanner/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { funTestApi(testFixtures(project(":scanner"))) funTestImplementation(platform(project(":plugins:scanners"))) + funTestImplementation(platform(project(":plugins:version-control-systems"))) testImplementation(platform(project(":plugins:scanners"))) diff --git a/utils/test/build.gradle.kts b/utils/test/build.gradle.kts index 3d5593368d941..ba267e281f134 100644 --- a/utils/test/build.gradle.kts +++ b/utils/test/build.gradle.kts @@ -24,6 +24,7 @@ plugins { dependencies { api(project(":model")) + api(project(":plugins:version-control-systems:git-version-control-system")) api(libs.kotestAssertionsCore) api(libs.kotestFrameworkApi)