@@ -49,6 +49,7 @@ type infoDependencyJSON struct {
4949
5050type infoSingerJSON struct {
5151 ID string `json:"id"`
52+ Path string `json:"path"`
5253 Class string `json:"class"`
5354 Name any `json:"name,omitempty"`
5455 Avatar any `json:"avatar,omitempty"`
@@ -131,21 +132,25 @@ func ShowInfo(target string, packagesDir string, languageCode string, jsonOutput
131132 return writeInfoError (jsonOutput , out , "NOT_FOUND" , err .Error (), nil , err )
132133 }
133134 filterInfoTarget (& info , resolved )
134- packageDir , err := filepath .Abs (filepath . Join (packagesDir , info .Package .Hash ))
135+ packageDir , err := filepath .Abs (installedPackageDir (packagesDir , info .Package .ID , info . Package . Version ))
135136 if err != nil {
136137 return writeInfoError (jsonOutput , out , "IO_ERROR" , fmt .Sprintf ("resolve package installation path: %v" , err ), nil , err )
137138 }
138139 absolutizeInfoPaths (& info , packageDir )
140+ contributionPaths , err := readInstalledContributionPaths (packageDir )
141+ if err != nil {
142+ return writeInfoError (jsonOutput , out , "SCHEMA_ERROR" , err .Error (), nil , err )
143+ }
139144
140145 if jsonOutput {
141146 return json .NewEncoder (out ).Encode (infoOutput {
142147 OK : true ,
143148 Command : "info" ,
144- Data : buildInfoData (info , resolved .Type , languageCode , packageDir ),
149+ Data : buildInfoData (info , resolved .Type , contributionPaths , languageCode , packageDir ),
145150 })
146151 }
147152
148- printInfoText (out , info , resolved .Type , languageCode , packageDir )
153+ printInfoText (out , info , resolved .Type , contributionPaths , languageCode , packageDir )
149154 return nil
150155}
151156
@@ -572,7 +577,7 @@ func absolutizeInfoPath(value string, packageDir string) string {
572577 return filepath .Join (packageDir , value )
573578}
574579
575- func buildInfoData (info infoPackage , targetType packageinfo.PackageReferenceType , languageCode string , packageDir string ) infoData {
580+ func buildInfoData (info infoPackage , targetType packageinfo.PackageReferenceType , contributionPaths contributionPaths , languageCode string , packageDir string ) infoData {
576581 data := infoData {
577582 Type : targetTypeText (targetType ),
578583 Installation : infoInstallationJSON {
@@ -606,13 +611,15 @@ func buildInfoData(info infoPackage, targetType packageinfo.PackageReferenceType
606611 for _ , inference := range info .Inspection .Contributes .Inferences {
607612 data .Inferences = append (data .Inferences , inspectInferenceJSON {
608613 ID : inference .ID ,
614+ Path : contributionPaths .Inferences [inference .ID ],
609615 Name : multilingualJSONValue (inference .Name , languageCode ),
610616 })
611617 }
612618
613619 for _ , singer := range info .Inspection .Contributes .Singers {
614620 item := infoSingerJSON {
615621 ID : singer .ID ,
622+ Path : contributionPaths .Singers [singer .ID ],
616623 Class : singer .Class ,
617624 Name : multilingualJSONValue (singer .Name , languageCode ),
618625 Avatar : multilingualJSONValue (singer .Avatar , languageCode ),
@@ -641,7 +648,7 @@ func buildInfoData(info infoPackage, targetType packageinfo.PackageReferenceType
641648 return data
642649}
643650
644- func printInfoText (out io.Writer , info infoPackage , targetType packageinfo.PackageReferenceType , languageCode string , packageDir string ) {
651+ func printInfoText (out io.Writer , info infoPackage , targetType packageinfo.PackageReferenceType , contributionPaths contributionPaths , languageCode string , packageDir string ) {
645652 printSectionTitle (out , "Installation" )
646653 printField (out , " " , "Path" , packageDir )
647654 printField (out , " " , "Hash" , info .Package .Hash )
@@ -676,7 +683,7 @@ func printInfoText(out io.Writer, info infoPackage, targetType packageinfo.Packa
676683 printEmpty (out , " " )
677684 }
678685 for _ , inference := range info .Inspection .Contributes .Inferences {
679- fmt .Fprintf (out , " %s\n " , inference .ID )
686+ fmt .Fprintf (out , " %s -> %s \n " , inference .ID , contributionPaths . Inferences [ inference . ID ] )
680687 printOptionalText (out , " Name" , inference .Name , languageCode )
681688 }
682689 fmt .Fprintln (out )
@@ -688,7 +695,7 @@ func printInfoText(out io.Writer, info infoPackage, targetType packageinfo.Packa
688695 printEmpty (out , " " )
689696 }
690697 for _ , singer := range info .Inspection .Contributes .Singers {
691- fmt .Fprintf (out , " %s\n " , singer .ID )
698+ fmt .Fprintf (out , " %s -> %s \n " , singer .ID , contributionPaths . Singers [ singer . ID ] )
692699 printOptionalText (out , " Name" , singer .Name , languageCode )
693700 printField (out , " " , "Class" , singer .Class )
694701 printOptionalText (out , " Avatar" , singer .Avatar , languageCode )
0 commit comments