skip git checkout when IsReadOnly(repo)

This commit is contained in:
Jeff Carr 2024-11-25 02:46:07 -06:00
parent 5db343390b
commit b34caae965
5 changed files with 127 additions and 9 deletions

34
checkout.go Normal file
View File

@ -0,0 +1,34 @@
package main
/*
this parses the command line arguements
this enables command line options from other packages like 'gui' and 'log'
*/
import (
"go.wit.com/log"
)
// okay
func checkoutDevel() bool {
log.Info("running git checkout devel everwhere")
var failed int = 0
var count int = 0
loop := me.repos.View.ReposSortByName()
for loop.Scan() {
repo := loop.Repo()
count += 1
// don't switch branches on readonly repos
if me.forge.IsReadOnly(repo.GoPath()) {
continue
}
if repo.Status.CheckoutDevel() {
// checkout ok
} else {
failed += 1
}
}
log.Info("Ran git checkout in", count, "repos. failure count =", failed)
return true
}

View File

@ -18,6 +18,8 @@ var myargv argv
func main() { func main() {
me = new(autoType) me = new(autoType)
standardMachineInit()
log.DaemonMode(false) log.DaemonMode(false)
me.myGui = gui.New() me.myGui = gui.New()
if !myargv.GitPull { if !myargv.GitPull {

View File

@ -3,6 +3,7 @@ package main
import ( import (
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/go-cmd/cmd" "github.com/go-cmd/cmd"
"go.wit.com/lib/gui/shell" "go.wit.com/lib/gui/shell"
@ -16,16 +17,34 @@ import (
func attemptAutoRebuild() bool { func attemptAutoRebuild() bool {
gosrc := me.goSrcPwd.String() gosrc := me.goSrcPwd.String()
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/apps/autotypist"}); !ok { return buildDied(r) } if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/apps/autotypist"}); !ok {
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/debian"}); !ok { return buildDied(r) } return buildDied(r)
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/tree"}); !ok { return buildDied(r) } }
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/nocui"}); !ok { return buildDied(r) } if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/debian"}); !ok {
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/gocui"}); !ok { return buildDied(r) } return buildDied(r)
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/andlabs"}); !ok { return buildDied(r) } }
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/tree"}); !ok {
return buildDied(r)
}
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/nocui"}); !ok {
return buildDied(r)
}
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/gocui"}); !ok {
return buildDied(r)
}
if r, ok := quickCmd(gosrc, []string{"go-clone", "--recursive", "go.wit.com/toolkits/andlabs"}); !ok {
return buildDied(r)
}
if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/nocui/"), []string{"make"}); !ok { return buildDied(r) } if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/nocui/"), []string{"make"}); !ok {
if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/gocui/"), []string{"make"}); !ok { return buildDied(r) } return buildDied(r)
if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/andlabs/"), []string{"make"}); !ok { return buildDied(r) } }
if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/gocui/"), []string{"make"}); !ok {
return buildDied(r)
}
if r, ok := quickCmd(filepath.Join(gosrc, "go.wit.com/toolkits/andlabs/"), []string{"make"}); !ok {
return buildDied(r)
}
// build the protobuf files // build the protobuf files
// TODO: verify the right protoc-gen-go exists // TODO: verify the right protoc-gen-go exists
@ -33,7 +52,10 @@ func attemptAutoRebuild() bool {
log.Warn("missing /usr/bin/protc-gen-go. apt install protoc-gen-go") log.Warn("missing /usr/bin/protc-gen-go. apt install protoc-gen-go")
return false return false
} }
quickCmd(filepath.Join(gosrc, "go.wit.com/lib/protobuf/forgepb/"), []string{"make"})
quickCmd(filepath.Join(gosrc, "go.wit.com/lib/protobuf/virtbuf/"), []string{"make"}) quickCmd(filepath.Join(gosrc, "go.wit.com/lib/protobuf/virtbuf/"), []string{"make"})
quickCmd(filepath.Join(gosrc, "go.wit.com/lib/protobuf/zoopb/"), []string{"make"})
quickCmd(filepath.Join(gosrc, "go.wit.com/apps/autotypist/"), []string{"make", "build"}) quickCmd(filepath.Join(gosrc, "go.wit.com/apps/autotypist/"), []string{"make", "build"})
return true return true
} }

49
standardMachineInit.go Normal file
View File

@ -0,0 +1,49 @@
package main
import (
"os"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/log"
)
// does a standard forgepb & zoopb init
func standardMachineInit() {
var err error
// load the ~/.config/forge/ config
if err = me.forge.ConfigLoad(); err != nil {
log.Warn("forgepb.ConfigLoad() failed", err)
os.Exit(-1)
}
me.forge.PrintTable()
// load the ~/.config/forge/ machine file from zoopb
if err = me.machine.ConfigLoad(); err != nil {
log.Warn("zoopb.ConfigLoad() failed", err)
os.Exit(-1)
}
me.machine.InitWit()
// list all packages from mirrors.wit.com
/*
loop := me.machine.Wit.SortByName()
for loop.Scan() {
p := loop.Package()
log.Info("package:", p.Name, p.Version, p.PkgName)
}
*/
// use ~/go/src unless we find a go.work file in a parent directory
if me.goSrcPath, err = forgepb.FindGoSrc(); err != nil {
log.Info(err)
os.Exit(-1)
}
// this ENV value is used by the repolist and repostatus packages
if me.goSrcPath != "" {
os.Setenv("REPO_WORK_PATH", me.goSrcPath)
}
}

View File

@ -3,6 +3,8 @@ package main
import ( import (
"go.wit.com/gui" "go.wit.com/gui"
"go.wit.com/lib/gadgets" "go.wit.com/lib/gadgets"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/zoopb"
) )
var me *autoType var me *autoType
@ -17,6 +19,15 @@ func (b *autoType) Enable() {
// this app's variables // this app's variables
type autoType struct { type autoType struct {
// your customized repo preferences and settings
forge forgepb.Repos
// where your ~/go/src is
goSrcPath string
// use zookeeper to get the list of installed packages
machine zoopb.Machine
// allrepos map[string]*repo // allrepos map[string]*repo
myGui *gui.Node myGui *gui.Node