Skip to content

⬆️ 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 LatestStatus in CI.
  • 📈 Monitor dependency freshness metrics.

Signature

go
func (c *Composer) GetOutdatedInfo() (*OutdatedResult, error)

Parameters

None.

Return value

ValueTypeDescription
Result*OutdatedResultParsed outdated package information
ErrorerrorReturned 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.

Released under the MIT License