diff options
| author | Jeff Carr <[email protected]> | 2025-09-11 01:53:53 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-09-11 01:53:53 -0500 |
| commit | dbde2f51b8acb4043203b5592531c6715896c800 (patch) | |
| tree | bb892866022b2f8045784091b181592dc480b3c8 /configLookup.go | |
| parent | ac107331fc376edc5343732f7ebcd0d8e3177282 (diff) | |
cleanup config file handling
Diffstat (limited to 'configLookup.go')
| -rw-r--r-- | configLookup.go | 337 |
1 files changed, 0 insertions, 337 deletions
diff --git a/configLookup.go b/configLookup.go deleted file mode 100644 index 5a230a8..0000000 --- a/configLookup.go +++ /dev/null @@ -1,337 +0,0 @@ -package forgepb - -/* - lookup settings for a particular *gitpb.Repo or gopath string - - user settings are configured in ~/.config/forge/forge.text - - // searchs by string - Configs.IsReadOnly(path) // user can't push commits - Configs.IsWritable(path) // the opposite, but maybe different so I put both here - - IsPrivate(repo) // repo can't be published to the pkg.go.dev system - DebName() // for 'zookeeper' returns 'zookeeper-go' - - This code is practical, not perfect -*/ - -import ( - "path/filepath" - "strings" - - "go.wit.com/lib/protobuf/gitpb" -) - -/* -func (all *ForgeConfigs) UpdateGoPath(name string, gopath string) bool { - oldr := all.DeleteByGoPath(name) - if oldr == nil { - // nothing to update - return false - } - - // update gopath and append it back to the list - oldr.GoPath = gopath - return all.Append(oldr) -} -*/ - -// returns true if gopath is readonly() -// will attempt to match IsWritable("foo") against anything ending in "foo" -func (fc *ForgeConfigs) IsReadOnly(gopath string) bool { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == gopath { - // exact gopath match - if r.Writable { - return false - } - if r.ReadOnly { - return true - } - // private is assumed to be r/w unless above is specifically set - if r.Private { - return false - } - } - // if gopath == "foo" will return false if "go.wit.com/apps/foo" is Writable - base := filepath.Base(r.GoPath) - if base == gopath { - if r.Writable { - return false - } - } - // search for potential dir matches - if r.Directory { - // test the dir - if strings.HasPrefix(gopath, r.GoPath) { - match = r - } - } - } - - if match == nil { - // log.Info("did not match in IsReadOnly()", gopath) - return true - } - - // take the settings from the directory match - if match.Writable { - return false - } - if match.ReadOnly { - return true - } - // private is assumed to be r/w unless above is specifically set - if match.Private { - return false - } - - // always assume readonly - return true -} - -// returns the deb package name -// this let's you check a git tag version against a package .deb version -// allows gopath's to not need to match the .deb name -// this is important in lots of cases! It is normal and happens often enough. -func (fc *ForgeConfigs) DebName(gopath string) string { - // get "zookeeper" from "go.wit.com/apps/zookeeper" - normalBase := filepath.Base(gopath) - - all := fc.SortByGoPath() - for all.Scan() { - r := all.Next() - if r.GoPath == gopath { - // returns "zookeeper-go" for "go.wit.com/apps/zookeeper" - if r.DebName != "" { - // log.Info("FOUND DebName", r.DebName) - return r.DebName - } else { - return normalBase - } - } - } - return normalBase -} - -// a work in progress -func (f *Forge) IsPrivate(repo *gitpb.Repo) bool { - namespace := repo.GetNamespace() - if namespace == "" { - // assume true - return true - } - - return f.Config.IsPrivate(namespace) -} - -// is this a non-publishable repo? -// matches package names from apt -// -// IsPrivate("foo") will match anything in the config file ending in "foo" -// -// IsPrivate("go.foo.com/jcarr/foo") returns true if private -// IsPrivate("foo") also returns true if "go.bar.com/jcarr/foo" is private -func (fc *ForgeConfigs) IsPrivate(thing string) bool { - var match *ForgeConfig - - // sort by path means the simple 'match' logic - // here works in the sense the last directory match - // is the one that is used - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - // if private is set here, then ok, otherwise - // still check if a Directory match exists - if r.Private { - return true - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.Private { - return true - } - } - // check to see if IsPrivate("foo") - // search for potential dir matches - if r.Directory { - // test the dir - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - // log.Info("did not match in IsPrivate()", thing) - return false - } - - // otherwise, assume not private - return match.Private -} - -// IsFavorite() -- fun option for the config -// file that lets you set things as favorites -// so you can just go-clone a bunch of common things -// on a new box or after you reset/delete your ~/go/src dir -func (fc *ForgeConfigs) IsFavorite(thing string) bool { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - if r.Favorite { - return true - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.Favorite { - return true - } - } - if r.Directory { - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - return false - } - - return match.Favorite -} - -// IsWritable() checks your .config/forge/ settings -// looks for an exact match, then -// looks for a directory match -func (fc *ForgeConfigs) IsWritable(thing string) bool { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - if r.Writable { - return true - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.Writable { - return true - } - } - if r.Directory { - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - return false - } - - return match.Writable -} - -// allows custom user branch names in the forge config -func (fc *ForgeConfigs) FindUserBranch(thing string) string { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - if r.UserBranchName != "" { - return r.UserBranchName - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.UserBranchName != "" { - return r.UserBranchName - } - } - if r.Directory { - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - return "" - } - - return match.UserBranchName -} - -// allows custom devel branch names in the forge config -func (fc *ForgeConfigs) FindDevelBranch(thing string) string { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - if r.DevelBranchName != "" { - return r.DevelBranchName - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.DevelBranchName != "" { - return r.DevelBranchName - } - } - if r.Directory { - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - return "" - } - - return match.DevelBranchName -} - -// allows custom devel branch names in the forge config -func (fc *ForgeConfigs) FindMasterBranch(thing string) string { - var match *ForgeConfig - - all := fc.SortByGoPath() // get the list of repos - for all.Scan() { - r := all.Next() - if r.GoPath == thing { - if r.MasterBranchName != "" { - return r.MasterBranchName - } - } - base := filepath.Base(r.GoPath) - if base == thing { - if r.MasterBranchName != "" { - return r.MasterBranchName - } - } - if r.Directory { - if strings.HasPrefix(thing, r.GoPath) { - match = r - } - } - } - if match == nil { - return "" - } - - return match.MasterBranchName -} |
