summaryrefslogtreecommitdiff
path: root/doSync.go
diff options
context:
space:
mode:
Diffstat (limited to 'doSync.go')
-rw-r--r--doSync.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/doSync.go b/doSync.go
new file mode 100644
index 0000000..a6bb284
--- /dev/null
+++ b/doSync.go
@@ -0,0 +1,73 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "fmt"
+ "time"
+
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/log"
+)
+
+// trys to figure out if there is still something to update
+
+func doSync() error {
+ if argv.Sync.Clean != nil {
+ return doSyncClean()
+ }
+ if argv.Sync.User != nil {
+ return doSyncUser()
+ }
+
+ return fmt.Errorf("nothing to do")
+}
+
+func doSyncClean() error {
+ me.argvCheckoutMaster = true
+ me.forge.Config.Mode = forgepb.ForgeMode_MASTER
+ me.forge.Config.ConfigSave()
+
+ if err := doCheckoutShared(); err != nil {
+ return err
+ }
+
+ if _, _, _, err := IsEverythingOnMaster(); err != nil {
+ log.Info("Not all repos are on the master branch")
+ return err
+ }
+
+ if err := doCleanUser(); err != nil {
+ badExit(err)
+ }
+
+ if err := doCleanDevel(); err != nil {
+ badExit(err)
+ }
+
+ now := time.Now()
+ pullcount := me.forge.RillFuncError(rillPull)
+ count := me.forge.RillReload()
+ if count != 0 {
+ me.forge.ConfigSave()
+ }
+
+ total, count, nope, _ := IsEverythingOnMaster()
+ log.Printf("Master branch check. %d total repos. (%d git pulled) (%d not on master branch) (%s) git pull total=%d\n", total, count, nope, shell.FormatDuration(time.Since(now)), pullcount)
+
+ return nil
+}
+
+func doSyncUser() error {
+ me.argvCheckoutUser = true
+ me.forge.Config.Mode = forgepb.ForgeMode_USER
+ me.forge.Config.ConfigSave()
+
+ if err := doCheckoutShared(); err != nil {
+ return err
+ }
+
+ return nil
+}