Skip to content

Commit 5fed7b4

Browse files
authored
Merge pull request #99 from setlog/quality-happy-path2
Reduce complexity of main function. Eliminates code duplication
2 parents e8bfafe + c522f90 commit 5fed7b4

File tree

6 files changed

+36
-42
lines changed

6 files changed

+36
-42
lines changed

cmd/launcher/gui/reporting.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ import (
1919
"github.com/setlog/trivrost/cmd/launcher/flags"
2020
)
2121

22-
func ReportFatalError(fatalError error, launcherFlags *flags.LauncherFlags) {
23-
WaitUntilReady()
24-
defer Quit()
25-
PanicInformatively(fatalError, launcherFlags)
26-
}
27-
2822
func HandlePanic(launcherFlags *flags.LauncherFlags) {
2923
if r := recover(); r != nil {
3024
if err, ok := r.(error); ok && errors.Is(err, context.Canceled) {

cmd/launcher/launcher/entry.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,9 @@ import (
99
log "github.com/sirupsen/logrus"
1010

1111
"github.com/setlog/trivrost/cmd/launcher/flags"
12-
"github.com/setlog/trivrost/cmd/launcher/gui"
1312
)
1413

1514
func LauncherMain(ctx context.Context, launcherFlags *flags.LauncherFlags) {
16-
gui.WaitUntilReady()
17-
defer gui.Quit()
18-
defer gui.HandlePanic(launcherFlags)
19-
2015
places.MakePlaces()
2116
defer Linger()
2217
locking.AcquireLock(ctx, launcherFlags)

cmd/launcher/launcher/run.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func Run(ctx context.Context, launcherFlags *flags.LauncherFlags) {
2727
updater.Prepare(resources.LauncherConfig.DeploymentConfigURL)
2828

2929
if !IsInstanceInstalledInSystemMode() && !launcherFlags.SkipSelfUpdate {
30-
updateSelf(updater, launcherFlags)
30+
updateLauncherToLatestVersion(updater, launcherFlags)
3131
}
3232
updateBundles(ctx, updater)
3333

@@ -67,9 +67,9 @@ func createUpdater(ctx context.Context, handler *gui.GuiDownloadProgressHandler)
6767
return updater
6868
}
6969

70-
func updateSelf(updater *bundle.Updater, launcherFlags *flags.LauncherFlags) {
71-
updater.SetIgnoredSelfUpdateBundleInfoSHAs(resources.LauncherConfig.IgnoreLauncherBundleInfoHashes)
72-
if updater.UpdateSelf() {
70+
func updateLauncherToLatestVersion(updater *bundle.Updater, launcherFlags *flags.LauncherFlags) {
71+
updater.SetIgnoredLauncherUpdateBundleInfoSHAs(resources.LauncherConfig.IgnoreLauncherBundleInfoHashes)
72+
if updater.UpdateLauncherToLatestVersion() {
7373
runPostBinaryUpdateProvisioning()
7474
locking.Restart(true, launcherFlags)
7575
}

cmd/launcher/main.go

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,12 @@ var gitBranch string
4545

4646
func main() {
4747
defer misc.LogPanic()
48-
launcherFlags, fatalError := initializeEnvironment()
48+
launcherFlags, envErr := initializeEnvironment()
4949
ctx, cancelFunc := context.WithCancel(context.Background())
5050

51-
if fatalError == nil {
52-
go launcher.LauncherMain(ctx, launcherFlags)
53-
} else {
54-
go gui.ReportFatalError(fatalError, launcherFlags)
55-
}
56-
57-
// On MacOS, only the first thread created by the OS is allowed to be the main GUI thread.
58-
// Also, on Windows, OLE code needs to run on the main thread, which we rely on when creating shortcuts.
59-
runtime.LockOSThread()
51+
go runLauncher(ctx, envErr, launcherFlags)
52+
runGUI(ctx, cancelFunc, launcherFlags, envErr == nil)
6053

61-
err := gui.Main(ctx, cancelFunc, resources.LauncherConfig.BrandingName, !launcherFlags.Uninstall && fatalError == nil)
62-
if err != nil {
63-
log.Fatalf("gui.Main() failed: %v\n", err)
64-
}
65-
66-
log.Info("End of main().")
6754
log.Exit(0)
6855
}
6956

@@ -80,6 +67,28 @@ func initializeEnvironment() (*flags.LauncherFlags, error) {
8067
return launcherFlags, misc.NewNestedErrorFromFirstCause(argumentError, flagError, pathError, placesError)
8168
}
8269

70+
func runLauncher(ctx context.Context, fatalError error, launcherFlags *flags.LauncherFlags) {
71+
gui.WaitUntilReady()
72+
defer gui.Quit()
73+
if fatalError != nil {
74+
gui.PanicInformatively(fatalError, launcherFlags)
75+
}
76+
defer gui.HandlePanic(launcherFlags)
77+
launcher.LauncherMain(ctx, launcherFlags)
78+
}
79+
80+
func runGUI(ctx context.Context, cancelFunc context.CancelFunc, launcherFlags *flags.LauncherFlags, showMainWindow bool) {
81+
// On MacOS, only the first thread created by the OS is allowed to be the main GUI thread.
82+
// Also, on Windows, OLE code needs to run on the main thread, which we rely on when creating shortcuts.
83+
runtime.LockOSThread()
84+
85+
err := gui.Main(ctx, cancelFunc, resources.LauncherConfig.BrandingName, !launcherFlags.Uninstall && showMainWindow)
86+
if err != nil {
87+
log.Fatalf("gui.Main() failed: %v\n", err)
88+
}
89+
log.Info("runGUI() terminated.")
90+
}
91+
8392
func parseEnvironment() (launcherFlags *flags.LauncherFlags, argumentError, flagError, pathError, evalError, placesError error) {
8493
launcherFlags = &flags.LauncherFlags{}
8594
if len(os.Args) < 1 {

pkg/launcher/bundle/update_self.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"github.com/setlog/trivrost/pkg/system"
1717
)
1818

19-
func (u *Updater) UpdateSelf() (needsRestart bool) {
19+
func (u *Updater) UpdateLauncherToLatestVersion() (madeChanges bool) {
2020
if u.deploymentConfig.GetLauncherUpdateConfig() == nil {
2121
return false
2222
}
@@ -25,7 +25,7 @@ func (u *Updater) UpdateSelf() (needsRestart bool) {
2525
return u.updateProgram(programPath)
2626
}
2727

28-
func (u *Updater) updateProgram(programPath string) (needsRestart bool) {
28+
func (u *Updater) updateProgram(programPath string) (madeChanges bool) {
2929
log.Infof("Calculating local hashes.")
3030
u.announceStatus(DetermineLocalLauncherVersion, 20)
3131
presentState := hashing.MustHash(u.ctx, programPath)
@@ -97,12 +97,12 @@ func (u *Updater) swapBinary(localBinaryPath string, remoteURL string, newFileIn
9797
}
9898
}
9999

100-
func (u *Updater) SetIgnoredSelfUpdateBundleInfoSHAs(ignoreShas []string) {
101-
u.ignoredSelfUpdateBundleInfoSHAs = ignoreShas
100+
func (u *Updater) SetIgnoredLauncherUpdateBundleInfoSHAs(ignoreShas []string) {
101+
u.ignoredLauncherUpdateBundleInfoSHAs = ignoreShas
102102
}
103103

104104
func (u *Updater) IsShaIgnored(sha string) bool {
105-
for _, ignoreSha := range u.ignoredSelfUpdateBundleInfoSHAs {
105+
for _, ignoreSha := range u.ignoredLauncherUpdateBundleInfoSHAs {
106106
if ignoreSha == sha {
107107
return true
108108
}

pkg/launcher/bundle/updater.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ type Updater struct {
2929
deploymentConfig *config.DeploymentConfig
3030
publicKeys []*rsa.PublicKey
3131

32-
bundleUpdateInfos []*BundleUpdateInfo
33-
ignoredSelfUpdateBundleInfoSHAs []string
32+
bundleUpdateInfos []*BundleUpdateInfo
33+
ignoredLauncherUpdateBundleInfoSHAs []string
3434

3535
userBundlesFolderPath string
3636
systemBundlesFolderPath string
@@ -58,10 +58,6 @@ func (u *Updater) DisableTimestampVerification() {
5858
u.timestampFilePath = ""
5959
}
6060

61-
func (u *Updater) IsTimestampVerificationEnabled() bool {
62-
return u.timestampFilePath == ""
63-
}
64-
6561
func (u *Updater) SetStatusCallback(statusCallback func(UpdaterStatus, uint64)) {
6662
u.statusCallback = statusCallback
6763
}

0 commit comments

Comments
 (0)