func newInner()

in agent/updateutil/updateinfo/updateinfo.go [162:255]


func newInner(context context.T) (updateInfo *updateInfoImpl, err error) {
	log := context.Log()
	var installScriptName, uninstallScriptName, platformName, platformVersion, downloadPlatformOverride string
	if platformName, err = getPlatformName(log); err != nil {
		return nil, err
	}

	installScriptName = updateconstants.InstallScript
	uninstallScriptName = updateconstants.UninstallScript
	// TODO: Change this structure to a switch and inject the platform name from another method.
	platformName = strings.ToLower(platformName)
	if strings.Contains(platformName, updateconstants.PlatformAmazonLinux) {
		log.Info("Detected platform Amazon Linux")
		platformName = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformBottlerocket) {
		log.Info("Detected platform Bottlerocket")
		platformName = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformRedHat) {
		log.Info("Detected platform RedHat")
		platformName = updateconstants.PlatformRedHat
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformOracleLinux) {
		log.Info("Detected platform Oracle Linux")
		platformName = updateconstants.PlatformOracleLinux
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformUbuntu) {
		platformName = updateconstants.PlatformUbuntu
		log.Info("Detected platform Ubuntu")
		if isSnap, err := isAgentInstalledUsingSnap(log); err == nil && isSnap {
			log.Info("Detected agent installed with snap")
			installScriptName = updateconstants.SnapInstaller
			uninstallScriptName = updateconstants.SnapUnInstaller

			// TODO: when versions below 2.2.546.0 have been deprecated, add line below
			//  Versions below 2.2.546 don't have *-snap-* download packages
			//  with these names and version below would be unable to update
			// downloadPlatformOverride = updateconstants.PlatformUbuntuSnap
		}
	} else if strings.Contains(platformName, updateconstants.PlatformCentOS) {
		log.Info("Detected platform CentOS")
		platformName = updateconstants.PlatformCentOS
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformRockyLinux) {
		log.Info("Detected platform Rocky Linux")
		platformName = updateconstants.PlatformRockyLinux
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformAlmaLinux) {
		log.Info("Detected platform AlmaLinux")
		platformName = updateconstants.PlatformAlmaLinux
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformFlatcar) {
		log.Info("Detected platform Flatcar")
		platformName = updateconstants.PlatformFlatcar
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformSuseOS) {
		log.Info("Detected platform SuseOS")
		platformName = updateconstants.PlatformSuseOS
		downloadPlatformOverride = updateconstants.PlatformLinux
	} else if strings.Contains(platformName, updateconstants.PlatformRaspbian) {
		log.Info("Detected platform Raspbian")
		platformName = updateconstants.PlatformRaspbian
		downloadPlatformOverride = updateconstants.PlatformUbuntu
	} else if strings.Contains(platformName, updateconstants.PlatformDebian) {
		log.Info("Detected platform Debian")
		platformName = updateconstants.PlatformDebian
		downloadPlatformOverride = updateconstants.PlatformUbuntu
	} else if strings.Contains(platformName, updateconstants.PlatformMacOsX) || strings.Contains(platformName, updateconstants.PlatformMacOs) {
		log.Info("Detected platform MacOS")
		platformName = updateconstants.PlatformMacOsX
		downloadPlatformOverride = updateconstants.PlatformDarwin
	} else if isNano, _ := platform.IsPlatformNanoServer(log); isNano {
		log.Info("Detected platform Windows Nano")
		platformName = updateconstants.PlatformWindowsNano
	} else {
		log.Info("Detected platform Windows")
		platformName = updateconstants.PlatformWindows
	}

	if platformVersion, err = getPlatformVersion(log); err != nil {
		return nil, err
	}
	updateInfo = &updateInfoImpl{
		context:                  context,
		platform:                 platformName,
		platformVersion:          platformVersion,
		downloadPlatformOverride: downloadPlatformOverride,
		arch:                     runtime.GOARCH,
		compressFormat:           updateconstants.CompressFormat,
		installScriptName:        installScriptName,
		uninstallScriptName:      uninstallScriptName,
	}

	return updateInfo, nil
}