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 }