Skip to content

Commit b12fb68

Browse files
losmateusz1sschuberth
authored andcommitted
feat(conan): Support VCS information in 'conandata.yml'
VCS information can optionally be exported using conan via [1]. [1]: https://github.com/conan-io/conan/blob/d9b2c5e36160b3cda7b2597c8d3a04690d9b47eb/conan/tools/scm/git.py#L273-L285 Signed-off-by: Mateusz Los <mateusz.los@extern.wenovate.de>
1 parent 1150f70 commit b12fb68

3 files changed

Lines changed: 26 additions & 6 deletions

File tree

plugins/package-managers/conan/src/main/kotlin/Conan.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,17 +364,33 @@ class Conan(
364364
}
365365
}
366366

367-
return ConanData(url, sha256, hasPatches)
367+
val scm = root.get<YamlMap>("scm")
368+
val scmUrl = scm?.get<YamlScalar>("url")?.content
369+
val scmCommit = scm?.get<YamlScalar>("commit")?.content
370+
371+
return ConanData(url, sha256, scmUrl, scmCommit, hasPatches)
368372
}
369373
}
370374

371375
internal data class ConanData(
372376
val url: String?,
373377
val sha256: String?,
378+
val scmUrl: String?,
379+
val scmCommit: String?,
374380
val hasPatches: Boolean
375381
) {
376382
companion object {
377-
val EMPTY = ConanData(url = null, sha256 = null, hasPatches = false)
383+
val EMPTY = ConanData(url = null, sha256 = null, scmUrl = null, scmCommit = null, hasPatches = false)
384+
}
385+
386+
/**
387+
* Return the [VcsInfo] for this [ConanData], or null if no VCS information is available.
388+
*/
389+
fun toVcsInfo(): VcsInfo {
390+
val url = scmUrl ?: return VcsInfo.EMPTY
391+
val vcsInfo = VcsHost.parseUrl(url)
392+
val revision = scmCommit ?: return vcsInfo
393+
return vcsInfo.copy(revision = revision)
378394
}
379395
}
380396

plugins/package-managers/conan/src/main/kotlin/ConanV1Handler.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import org.ossreviewtoolkit.model.Package
2929
import org.ossreviewtoolkit.model.PackageReference
3030
import org.ossreviewtoolkit.model.RemoteArtifact
3131
import org.ossreviewtoolkit.model.Scope
32-
import org.ossreviewtoolkit.model.VcsInfo
3332
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.DUMMY_COMPILER_SETTINGS
3433
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.SCOPE_NAME_DEPENDENCIES
3534
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.SCOPE_NAME_DEV_DEPENDENCIES
@@ -153,7 +152,10 @@ internal class ConanV1Handler(private val conan: Conan) : ConanVersionHandler {
153152
homepageUrl = homepageUrl,
154153
binaryArtifact = RemoteArtifact.EMPTY, // TODO: implement me!
155154
sourceArtifact = conan.parseSourceArtifact(conanData),
156-
vcs = processPackageVcs(VcsInfo.EMPTY, homepageUrl),
155+
vcs = processPackageVcs(
156+
conanData.toVcsInfo(),
157+
homepageUrl
158+
),
157159
isModified = conanData.hasPatches
158160
)
159161
}

plugins/package-managers/conan/src/main/kotlin/ConanV2Handler.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import org.ossreviewtoolkit.model.Package
3131
import org.ossreviewtoolkit.model.PackageReference
3232
import org.ossreviewtoolkit.model.RemoteArtifact
3333
import org.ossreviewtoolkit.model.Scope
34-
import org.ossreviewtoolkit.model.VcsInfo
3534
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.DUMMY_COMPILER_SETTINGS
3635
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.SCOPE_NAME_DEPENDENCIES
3736
import org.ossreviewtoolkit.plugins.packagemanagers.conan.Conan.Companion.SCOPE_NAME_DEV_DEPENDENCIES
@@ -198,7 +197,10 @@ internal class ConanV2Handler(private val conan: Conan) : ConanVersionHandler {
198197
homepageUrl = homepageUrl,
199198
binaryArtifact = RemoteArtifact.EMPTY, // TODO: implement me!
200199
sourceArtifact = conan.parseSourceArtifact(conanData),
201-
vcs = processPackageVcs(VcsInfo.EMPTY, homepageUrl),
200+
vcs = processPackageVcs(
201+
conanData.toVcsInfo(),
202+
homepageUrl
203+
),
202204
isModified = conanData.hasPatches
203205
)
204206
}

0 commit comments

Comments
 (0)