github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/integrations/sparkle/config.go (about)

     1  package sparkle
     2  
     3  import (
     4  	"dario.cat/mergo"
     5  
     6  	"github.com/kubri/kubri/pkg/crypto/dsa"
     7  	"github.com/kubri/kubri/pkg/crypto/ed25519"
     8  	"github.com/kubri/kubri/pkg/version"
     9  	"github.com/kubri/kubri/source"
    10  	"github.com/kubri/kubri/target"
    11  )
    12  
    13  type Config struct {
    14  	Title       string
    15  	Description string
    16  	URL         string
    17  	FileName    string
    18  	DetectOS    func(string) OS
    19  	DSAKey      *dsa.PrivateKey
    20  	Ed25519Key  ed25519.PrivateKey
    21  	Settings    []Rule
    22  
    23  	Source         *source.Source
    24  	Target         target.Target
    25  	Version        string
    26  	Prerelease     bool
    27  	UploadPackages bool
    28  }
    29  
    30  type Rule struct {
    31  	OS      OS
    32  	Version string
    33  	*Settings
    34  }
    35  
    36  type Settings struct {
    37  	InstallerArguments                string
    38  	MinimumSystemVersion              string
    39  	MinimumAutoupdateVersion          string
    40  	IgnoreSkippedUpgradesBelowVersion string
    41  	CriticalUpdate                    bool
    42  	CriticalUpdateBelowVersion        string
    43  }
    44  
    45  func getSettings(settings []Rule, v string, os OS) (*Settings, error) {
    46  	opt := &Settings{}
    47  	for _, s := range settings {
    48  		if isOS(os, s.OS) && version.Check(s.Version, v) {
    49  			if err := mergo.MergeWithOverwrite(opt, s.Settings); err != nil {
    50  				return nil, err
    51  			}
    52  		}
    53  	}
    54  	return opt, nil
    55  }