44 "encoding/json"
55 "fmt"
66 "os"
7+ "strings"
78)
89
910type ComposerPackage struct {
@@ -21,6 +22,17 @@ type ComposerLock struct {
2122
2223const ComposerEcosystem Ecosystem = "Packagist"
2324
25+ func extractCommit (pkg ComposerPackage ) string {
26+ commit := pkg .Dist .Reference
27+
28+ // a dot means the reference is likely a tag, rather than a commit
29+ if strings .Contains (commit , "." ) {
30+ commit = ""
31+ }
32+
33+ return commit
34+ }
35+
2436func ParseComposerLock (pathToLockfile string ) ([]PackageDetails , error ) {
2537 var parsedLockfile * ComposerLock
2638
@@ -47,7 +59,7 @@ func ParseComposerLock(pathToLockfile string) ([]PackageDetails, error) {
4759 packages = append (packages , PackageDetails {
4860 Name : composerPackage .Name ,
4961 Version : composerPackage .Version ,
50- Commit : composerPackage . Dist . Reference ,
62+ Commit : extractCommit ( composerPackage ) ,
5163 Ecosystem : ComposerEcosystem ,
5264 CompareAs : ComposerEcosystem ,
5365 })
@@ -57,7 +69,7 @@ func ParseComposerLock(pathToLockfile string) ([]PackageDetails, error) {
5769 packages = append (packages , PackageDetails {
5870 Name : composerPackage .Name ,
5971 Version : composerPackage .Version ,
60- Commit : composerPackage . Dist . Reference ,
72+ Commit : extractCommit ( composerPackage ) ,
6173 Ecosystem : ComposerEcosystem ,
6274 CompareAs : ComposerEcosystem ,
6375 })
0 commit comments