// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "os" "path/filepath" "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) func findRepo(wpath string) (*gitpb.Repo, bool) { d := filepath.Join(me.homedir, wpath) if !shell.IsDir(d) { return nil, false } repo, err := gitpb.NewRepo(d) if err != nil { log.Info("path error", d, err) return nil, false } return repo, true } func doPull(wpath string) { repo, ok := findRepo(wpath) if !ok { return } os.Chdir(repo.FullPath) exitOnErrorRealtime([]string{"git", "pull"}) } func doPush(wpath string) { doPull(wpath) d := filepath.Join(me.homedir, wpath) if !shell.IsDir(d) { return } repo, err := gitpb.NewRepo(d) if err != nil { log.Info("path error", d, err) return } if repo == nil { log.Info("repo is nil", d, err) return } if err := repo.GitCommit(); err != nil { badExit(err) } repo.RunRealtime([]string{"git", "push"}) } func doGit() error { log.DaemonMode(true) defer log.DaemonMode(false) if argv.Git.Log != nil { fstr := "--format=\"%h %>(24)%ar %>(20)%an %s" cmd := []string{"git", "log", fstr} shell.RunVerbose(cmd) okExit("") } if argv.Git.Who != nil { cmd := []string{"git", "who"} shell.RunVerbose(cmd) okExit("") } if argv.Git.Pull != nil { doPull(".config/wit") doPull("tools") okExit("") } if argv.Git.Push != nil { doPush(".config/wit") doPush("tools") okExit("") } return nil }