mirror of
https://github.com/safing/portbase
synced 2025-09-01 18:19:57 +00:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package updater
|
|
|
|
// File represents a file from the update system.
|
|
type File struct {
|
|
resource *Resource
|
|
version *ResourceVersion
|
|
notifier *notifier
|
|
versionedPath string
|
|
storagePath string
|
|
}
|
|
|
|
// Identifier returns the identifier of the file.
|
|
func (file *File) Identifier() string {
|
|
return file.resource.Identifier
|
|
}
|
|
|
|
// Version returns the version of the file.
|
|
func (file *File) Version() string {
|
|
return file.version.VersionNumber
|
|
}
|
|
|
|
// Path returns the absolute filepath of the file.
|
|
func (file *File) Path() string {
|
|
return file.storagePath
|
|
}
|
|
|
|
// Blacklist notifies the update system that this file is somehow broken, and should be ignored from now on, until restarted.
|
|
func (file *File) Blacklist() error {
|
|
return file.resource.Blacklist(file.version.VersionNumber)
|
|
}
|
|
|
|
// used marks the file as active
|
|
func (file *File) markActiveWithLocking() {
|
|
file.resource.Lock()
|
|
defer file.resource.Unlock()
|
|
|
|
// update last used version
|
|
if file.resource.ActiveVersion != file.version {
|
|
file.resource.ActiveVersion = file.version
|
|
file.resource.registry.notifyOfChanges()
|
|
}
|
|
}
|