Documentation ¶
Overview ¶
Package updater is an update registry that manages updates and versions.
Index ¶
- Variables
- func GetIdentifierAndVersion(versionedPath string) (identifier, version string, ok bool)
- func GetVersionedPath(identifier, version string) (versionedPath string)
- func UnpackGZIP(r io.Reader) (io.Reader, error)
- type File
- func (file *File) Blacklist() error
- func (file *File) Identifier() string
- func (file *File) Path() string
- func (file *File) Unpack(suffix string, unpacker Unpacker) (string, error)
- func (file *File) UpgradeAvailable() bool
- func (file *File) Version() string
- func (file *File) WaitForAvailableUpgrade() <-chan struct{}
- type Index
- type Resource
- func (res *Resource) AddVersion(version string, available, stableRelease, betaRelease bool) error
- func (res *Resource) AnyVersionAvailable() bool
- func (res *Resource) Blacklist(version string) error
- func (res *Resource) GetFile() *File
- func (res *Resource) Len() int
- func (res *Resource) Less(i, j int) bool
- func (res *Resource) Purge(keep int)
- func (res *Resource) Swap(i, j int)
- type ResourceRegistry
- func (reg *ResourceRegistry) AddIndex(idx Index)
- func (reg *ResourceRegistry) AddResource(identifier, version string, available, stableRelease, betaRelease bool) error
- func (reg *ResourceRegistry) AddResources(versions map[string]string, available, stableRelease, betaRelease bool) error
- func (reg *ResourceRegistry) Cleanup() error
- func (reg *ResourceRegistry) CreateSymlinks(symlinkRoot *utils.DirStructure) error
- func (reg *ResourceRegistry) DownloadUpdates(ctx context.Context) error
- func (reg *ResourceRegistry) Export() map[string]*Resource
- func (reg *ResourceRegistry) GetFile(identifier string) (*File, error)
- func (reg *ResourceRegistry) GetSelectedVersions() (versions map[string]string)
- func (reg *ResourceRegistry) Initialize(storageDir *utils.DirStructure) error
- func (reg *ResourceRegistry) LoadIndexes() error
- func (reg *ResourceRegistry) Purge(keep int)
- func (reg *ResourceRegistry) ScanStorage(root string) error
- func (reg *ResourceRegistry) SelectVersions()
- func (reg *ResourceRegistry) SetBeta(on bool)
- func (reg *ResourceRegistry) SetDevMode(on bool)
- func (reg *ResourceRegistry) StorageDir() *utils.DirStructure
- func (reg *ResourceRegistry) TmpDir() *utils.DirStructure
- func (reg *ResourceRegistry) UpdateIndexes() error
- type ResourceVersion
- type Unpacker
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("the requested file could not be found") ErrNotAvailableLocally = errors.New("the requested file is not available locally") )
Errors
Functions ¶
func GetIdentifierAndVersion ¶
GetIdentifierAndVersion splits the given file path into its identifier and version.
func GetVersionedPath ¶
GetVersionedPath combines the identifier and version and returns it as a file path.
Types ¶
type File ¶
type File struct {
// contains filtered or unexported fields
}
File represents a file from the update system.
func (*File) Blacklist ¶
Blacklist notifies the update system that this file is somehow broken, and should be ignored from now on, until restarted.
func (*File) Identifier ¶
Identifier returns the identifier of the file.
func (*File) Unpack ¶ added in v0.5.3
Unpack returns the path to the unpacked version of file and unpacks it on demand using unpacker.
func (*File) UpgradeAvailable ¶
UpgradeAvailable returns whether an upgrade is available for this file.
func (*File) WaitForAvailableUpgrade ¶
func (file *File) WaitForAvailableUpgrade() <-chan struct{}
WaitForAvailableUpgrade blocks (selectable) until an upgrade for this file is available.
type Index ¶ added in v0.5.2
type Index struct { // Path is the path to the index file // on the update server. Path string // Stable is set if the index file contains only stable // releases. Stable bool // Beta is set if the index file contains beta // releases. Beta bool }
Index describes an index file pulled by the updater.
type Resource ¶
type Resource struct { sync.Mutex // Identifier is the unique identifier for that resource. // It forms a file path using a forward-slash as the // path separator. Identifier string // Versions holds all available resource versions. Versions []*ResourceVersion // ActiveVersion is the last version of the resource // that someone requested using GetFile(). ActiveVersion *ResourceVersion // SelectedVersion is newest, selectable version of // that resource that is available. A version // is selectable if it's not blacklisted by the user. // Note that it's not guaranteed that the selected version // is available locally. In that case, GetFile will attempt // to download the latest version from the updates servers // specified in the resource registry. SelectedVersion *ResourceVersion // contains filtered or unexported fields }
Resource represents a resource (via an identifier) and multiple file versions.
func (*Resource) AddVersion ¶
AddVersion adds a resource version to a resource.
func (*Resource) AnyVersionAvailable ¶ added in v0.5.2
AnyVersionAvailable returns true if any version of res is locally available.
func (*Resource) Len ¶
Len is the number of elements in the collection. It implements sort.Interface for ResourceVersion.
func (*Resource) Less ¶
Less reports whether the element with index i should sort before the element with index j. It implements sort.Interface for ResourceVersions.
func (*Resource) Purge ¶
Purge deletes old updates, retaining a certain amount, specified by the keep parameter. Purge will always keep at least 2 versions so specifying a smaller keep value will have no effect. Note that blacklisted versions are not counted for the keep parameter. After purging a new version will be selected.
type ResourceRegistry ¶
type ResourceRegistry struct { sync.RWMutex Name string UpdateURLs []string MandatoryUpdates []string Beta bool DevMode bool Online bool // contains filtered or unexported fields }
ResourceRegistry is a registry for managing update resources.
func (*ResourceRegistry) AddIndex ¶ added in v0.5.2
func (reg *ResourceRegistry) AddIndex(idx Index)
AddIndex adds a new index to the resource registry.
func (*ResourceRegistry) AddResource ¶
func (reg *ResourceRegistry) AddResource(identifier, version string, available, stableRelease, betaRelease bool) error
AddResource adds a resource to the registry. Does _not_ select new version.
func (*ResourceRegistry) AddResources ¶
func (reg *ResourceRegistry) AddResources(versions map[string]string, available, stableRelease, betaRelease bool) error
AddResources adds resources to the registry. Errors are logged, the last one is returned. Despite errors, non-failing resources are still added. Does _not_ select new versions.
func (*ResourceRegistry) Cleanup ¶
func (reg *ResourceRegistry) Cleanup() error
Cleanup removes temporary files.
func (*ResourceRegistry) CreateSymlinks ¶
func (reg *ResourceRegistry) CreateSymlinks(symlinkRoot *utils.DirStructure) error
CreateSymlinks creates a directory structure with unversioned symlinks to the given updates list.
func (*ResourceRegistry) DownloadUpdates ¶
func (reg *ResourceRegistry) DownloadUpdates(ctx context.Context) error
DownloadUpdates checks if updates are available and downloads updates of used components.
func (*ResourceRegistry) Export ¶
func (reg *ResourceRegistry) Export() map[string]*Resource
Export exports the list of resources. All resources must be locked when accessed.
func (*ResourceRegistry) GetFile ¶
func (reg *ResourceRegistry) GetFile(identifier string) (*File, error)
GetFile returns the selected (mostly newest) file with the given identifier or an error, if it fails.
func (*ResourceRegistry) GetSelectedVersions ¶
func (reg *ResourceRegistry) GetSelectedVersions() (versions map[string]string)
GetSelectedVersions returns a list of the currently selected versions.
func (*ResourceRegistry) Initialize ¶
func (reg *ResourceRegistry) Initialize(storageDir *utils.DirStructure) error
Initialize initializes a raw registry struct and makes it ready for usage.
func (*ResourceRegistry) LoadIndexes ¶
func (reg *ResourceRegistry) LoadIndexes() error
LoadIndexes loads the current release indexes from disk or will fetch a new version if not available and the registry is marked as online.
func (*ResourceRegistry) Purge ¶
func (reg *ResourceRegistry) Purge(keep int)
Purge deletes old updates, retaining a certain amount, specified by the keep parameter. Will at least keep 2 updates per resource.
func (*ResourceRegistry) ScanStorage ¶
func (reg *ResourceRegistry) ScanStorage(root string) error
ScanStorage scans root within the storage dir and adds found resources to the registry. If an error occurred, it is logged and the last error is returned. Everything that was found despite errors is added to the registry anyway. Leave root empty to scan the full storage dir.
func (*ResourceRegistry) SelectVersions ¶
func (reg *ResourceRegistry) SelectVersions()
SelectVersions selects new resource versions depending on the current registry state.
func (*ResourceRegistry) SetBeta ¶
func (reg *ResourceRegistry) SetBeta(on bool)
SetBeta sets the beta flag.
func (*ResourceRegistry) SetDevMode ¶
func (reg *ResourceRegistry) SetDevMode(on bool)
SetDevMode sets the development mode flag.
func (*ResourceRegistry) StorageDir ¶
func (reg *ResourceRegistry) StorageDir() *utils.DirStructure
StorageDir returns the main storage dir of the resource registry.
func (*ResourceRegistry) TmpDir ¶
func (reg *ResourceRegistry) TmpDir() *utils.DirStructure
TmpDir returns the temporary working dir of the resource registry.
func (*ResourceRegistry) UpdateIndexes ¶
func (reg *ResourceRegistry) UpdateIndexes() error
UpdateIndexes downloads all indexes and returns the first error encountered.
type ResourceVersion ¶
type ResourceVersion struct { // VersionNumber is the string representation of the resource // version. VersionNumber string // Available indicates if this version is available locally. Available bool // StableRelease indicates that this version is part of // a stable release index file. StableRelease bool // BetaRelease indicates that this version is part of // a beta release index file. BetaRelease bool // Blacklisted may be set to true if this version should // be skipped and not used. This is useful if the version // is known to be broken. Blacklisted bool // contains filtered or unexported fields }
ResourceVersion represents a single version of a resource.
func (*ResourceVersion) String ¶ added in v0.5.2
func (rv *ResourceVersion) String() string
type Unpacker ¶ added in v0.5.3
Unpacker describes the function that is passed to File.Unpack. It receives a reader to the compressed/packed file and should return a reader that provides unpacked file contents. If the returned reader implements io.Closer it's close method is invoked when an error or io.EOF is returned from Read().