⬆️ GetOutdatedInfo
Gets structured outdated package information; internally runs composer outdated --format=json and parses it into *OutdatedResult.
When to use
- 📊 Programmatically iterate over outdated packages and generate upgrade reports.
- 🤖 Determine whether an upgrade is safe based on
LatestStatusin CI. - 📈 Monitor dependency freshness metrics.
Signature
go
func (c *Composer) GetOutdatedInfo() (*OutdatedResult, error)Parameters
None.
Return value
| Value | Type | Description |
|---|---|---|
| Result | *OutdatedResult | Parsed outdated package information |
| Error | error | Returned when execution or JSON parsing fails |
OutdatedResult and entry structure:
go
type OutdatedResult struct {
Installed []OutdatedPackage `json:"installed"`
Count int `json:"count,omitempty"`
}
type OutdatedPackage struct {
Name string `json:"name"`
Latest string `json:"latest"`
Installed string `json:"version"`
LatestStatus string `json:"latest_status"`
Abandoned interface{} `json:"abandoned,omitempty"`
}LatestStatus values: semver-safe-update (semantically safe upgrade), update-possible (upgradeable but may break), up-to-date (already up to date).
Example
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("initialization failed: %v", err)
}
result, err := comp.GetOutdatedInfo()
if err != nil {
log.Fatalf("failed to get outdated package info: %v", err)
}
fmt.Printf("%d outdated packages in total\n", result.Count)
for _, pkg := range result.Installed {
fmt.Printf("%s: %s -> %s (%s)\n",
pkg.Name, pkg.Installed, pkg.Latest, pkg.LatestStatus)
}
}Advanced
GetOutdatedInfoWithOptions
Use this when you need to append flags such as --direct and --minor-only:
go
func (c *Composer) GetOutdatedInfoWithOptions(options map[string]string) (*OutdatedResult, error)Non-zero exit code handling
composer outdated may return a non-zero exit code when there are outdated packages, but the output still contains valid JSON. The SDK handles this: when err is non-nil but output is non-empty, the output is still parsed; an empty result is returned only when the output is empty.
Text output
For the raw text only, use OutdatedPackages.
🔍 Related methods
OutdatedPackages: text output.BumpPackages: upgrade to the latest version within the constraint.