Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: separate system drivers in new style #37

Merged
merged 5 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions cmd/imageOutdated.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package cmd

import (
"log"
"log/slog"

"github.com/spf13/cobra"
"github.com/ublue-os/uupd/drv"
)

func ImageOutdated(cmd *cobra.Command, args []string) {
systemDriver, err := drv.GetSystemUpdateDriver()
systemUpdater, err := drv.SystemUpdater{}.New(drv.UpdaterInitConfiguration{})
if err != nil {
log.Fatalf("Failed to get system update driver: %v", err)
slog.Error("Failed getting system driver", slog.Any("error", err))
return
}
outdated, err := systemDriver.ImageOutdated()
if err != nil {
log.Fatalf("Cannot determine if image is outdated: %v", err)
}
log.Printf("%t", outdated)

println(systemUpdater.Outdated)
}
75 changes: 57 additions & 18 deletions cmd/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,6 @@ func Update(cmd *cobra.Command, args []string) {
initConfiguration.DryRun = dryRun
initConfiguration.Verbose = verboseRun

systemUpdater, err := drv.SystemUpdater{}.New(*initConfiguration)
if err != nil {
systemUpdater.Config.Enabled = false
} else {
enableUpd, err := systemUpdater.Check()
if err != nil {
slog.Error("Failed checking for updates")
}
systemUpdater.Config.Enabled = enableUpd
if !enableUpd {
slog.Debug("No system update found, disabiling module")
}
}

brewUpdater, err := drv.BrewUpdater{}.New(*initConfiguration)
brewUpdater.Config.Enabled = err == nil

Expand All @@ -87,7 +73,45 @@ func Update(cmd *cobra.Command, args []string) {
distroboxUpdater.Config.Enabled = err == nil
distroboxUpdater.SetUsers(users)

totalSteps := brewUpdater.Steps() + systemUpdater.Steps() + flatpakUpdater.Steps() + distroboxUpdater.Steps()
var enableUpd bool = true
var systemOutdated bool

rpmOstreeUpdater, err := drv.RpmOstreeUpdater{}.New(*initConfiguration)
if err != nil {
enableUpd = false
}

systemUpdater, err := drv.SystemUpdater{}.New(*initConfiguration)
if err != nil {
enableUpd = false
}

// FIXME: Bootc can also only be used whenever there are no layered packages, we should account for that!
tulilirockz marked this conversation as resolved.
Show resolved Hide resolved
isBootc, err := drv.BootcCompatible(systemUpdater.BinaryPath)
if err != nil {
isBootc = false
}

if !isBootc {
slog.Debug("Using rpm-ostree fallback as system driver")
}

systemUpdater.Config.Enabled = enableUpd && isBootc
rpmOstreeUpdater.Config.Enabled = enableUpd && !isBootc

if systemUpdater.Config.Enabled {
enableUpd, err = systemUpdater.Check()
} else {
enableUpd, err = rpmOstreeUpdater.Check()
}
if err != nil {
slog.Error("Failed checking for updates")
}
if !enableUpd {
slog.Debug("No system update found, disabiling module")
}

totalSteps := brewUpdater.Steps() + systemUpdater.Steps() + rpmOstreeUpdater.Steps() + flatpakUpdater.Steps() + distroboxUpdater.Steps()
pw := lib.NewProgressWriter()
pw.SetNumTrackersExpected(1)
pw.SetAutoStop(false)
Expand Down Expand Up @@ -118,7 +142,17 @@ func Update(cmd *cobra.Command, args []string) {

var outputs = []drv.CommandOutput{}

if systemUpdater.Outdated {
if systemUpdater.Config.Enabled {
systemOutdated, err = systemUpdater.Outdated()
} else {
systemOutdated, err = rpmOstreeUpdater.Outdated()
}

if err != nil {
slog.Error("Failed checking if system is out of date")
}

if systemOutdated {
const OUTDATED_WARNING = "There hasn't been an update in over a month. Consider rebooting or running updates manually"
err := lib.Notify("System Warning", OUTDATED_WARNING)
if err != nil {
Expand All @@ -127,9 +161,14 @@ func Update(cmd *cobra.Command, args []string) {
slog.Warn(OUTDATED_WARNING)
}

if systemUpdater.Config.Enabled {
if enableUpd {
lib.ChangeTrackerMessageFancy(pw, tracker, progressEnabled, lib.TrackerMessage{Title: systemUpdater.Config.Title, Description: systemUpdater.Config.Description})
out, err := systemUpdater.Update()
var out *[]drv.CommandOutput
if rpmOstreeUpdater.Config.Enabled {
out, err = rpmOstreeUpdater.Update()
} else {
out, err = systemUpdater.Update()
}
outputs = append(outputs, *out...)
tracker.IncrementSection(err)
}
Expand Down
19 changes: 13 additions & 6 deletions cmd/updateCheck.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
package cmd

import (
"log/slog"

"github.com/spf13/cobra"
"github.com/ublue-os/uupd/drv"
"log"
)

func UpdateCheck(cmd *cobra.Command, args []string) {
systemDriver, err := drv.GetSystemUpdateDriver()
systemUpdater, err := drv.SystemUpdater{}.New(drv.UpdaterInitConfiguration{})
if err != nil {
log.Fatalf("Failed to get system update driver: %v", err)
slog.Error("Failed getting system driver", slog.Any("error", err))
return
}
update, err := systemDriver.UpdateAvailable()
updateAvailable, err := systemUpdater.Check()
if err != nil {
log.Fatalf("Failed to check for updates: %v", err)
slog.Error("Failed checking for updates", slog.Any("error", err))
return
}
if updateAvailable {
slog.Info("Update Available")
} else {
slog.Info("No updates available")
}
log.Printf("Update Available: %v", update)
}
157 changes: 0 additions & 157 deletions drv/bootc.go

This file was deleted.

Loading