func RunAptGetUpgrade()

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
}