in ospatch/apt_upgrade.go [64:114]
func RunAptGetUpgrade(ctx context.Context, opts ...AptGetUpgradeOption) error {
aptOpts := &aptGetUpgradeOpts{
upgradeType: packages.AptGetUpgrade,
excludes: nil,
exclusivePackages: nil,
dryrun: false,
}
for _, opt := range opts {
opt(aptOpts)
}
pkgs, err := packages.AptUpdates(ctx, packages.AptGetUpgradeType(aptOpts.upgradeType), packages.AptGetUpgradeShowNew(true))
if err != nil {
return err
}
fPkgs, err := filterPackages(pkgs, aptOpts.exclusivePackages, aptOpts.excludes)
if err != nil {
return err
}
if len(fPkgs) == 0 {
clog.Infof(ctx, "No packages to update.")
return nil
}
var pkgNames []string
for _, pkg := range fPkgs {
pkgNames = append(pkgNames, pkg.Name)
}
msg := fmt.Sprintf("%d packages: %q", len(pkgNames), fPkgs)
if aptOpts.dryrun {
clog.Infof(ctx, "Running in dryrun mode, not updating %s", msg)
return nil
}
ops := opsToReport{
packages: fPkgs,
}
logOps(ctx, ops)
err = packages.InstallAptPackages(ctx, pkgNames)
if err == nil {
logSuccess(ctx, ops)
} else {
logFailure(ctx, ops, err)
}
return err
}