go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/updates/updates.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package updates
     5  
     6  import (
     7  	"errors"
     8  
     9  	"go.mondoo.com/cnquery/providers/os/connection/shared"
    10  )
    11  
    12  type OperatingSystemUpdate struct {
    13  	ID          string `json:"id"`
    14  	Name        string `json:"name"`
    15  	Version     string `json:"version"`
    16  	Description string `json:"description"`
    17  	Severity    string `json:"severity"`
    18  	Category    string `json:"category"`
    19  	Restart     bool   `json:"restart"`
    20  	Format      string `json:"format"`
    21  }
    22  
    23  type OperatingSystemUpdateManager interface {
    24  	Name() string
    25  	List() ([]OperatingSystemUpdate, error)
    26  }
    27  
    28  // ResolveSystemUpdateManager uses the local system updated to ask for updates
    29  func ResolveSystemUpdateManager(conn shared.Connection) (OperatingSystemUpdateManager, error) {
    30  	var um OperatingSystemUpdateManager
    31  
    32  	pf := conn.Asset().Platform
    33  
    34  	// TODO: use OS family and select package manager
    35  	switch pf.Name {
    36  	case "opensuse", "sles", "opensuse-leap", "opensuse-tumbleweed": // suse family
    37  		um = &SuseUpdateManager{conn: conn}
    38  	case "windows":
    39  		um = &WindowsUpdateManager{conn: conn}
    40  	case "macos":
    41  		um = &MacosUpdateManager{conn: conn}
    42  	default:
    43  		return nil, errors.New("your platform is not supported by os updates resource")
    44  	}
    45  	return um, nil
    46  }