From 364d53efcd0cf1d3fdc4acaf9de4b0f9d4c6d4bc Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Tue, 3 Dec 2024 00:34:24 -0600 Subject: [PATCH] need to redo all this code --- dumpVersions.go | 56 --------- listWindow.go | 327 ------------------------------------------------ 2 files changed, 383 deletions(-) delete mode 100644 dumpVersions.go delete mode 100644 listWindow.go diff --git a/dumpVersions.go b/dumpVersions.go deleted file mode 100644 index ff67c75..0000000 --- a/dumpVersions.go +++ /dev/null @@ -1,56 +0,0 @@ -package gowit - -import ( - "fmt" - "os" - "strconv" - "strings" - "time" - - "go.wit.com/lib/gui/repolist" - "go.wit.com/log" -) - -func DumpVersions(view *repolist.RepoList) { - f, _ := os.OpenFile("/tmp/go.wit.com.versions", os.O_WRONLY|os.O_CREATE, 0600) - defer f.Close() - for _, sec := range allsections { - for _, wrepo := range sec.witRepos { - var r *repolist.RepoRow - r = view.FindRepo(wrepo.path.String()) - if r == nil { - log.Info("repo not scanned for some reason", wrepo.path.String()) - continue - } - lastTag := r.LastTag() - result := r.Status.Run([]string{"git", "log", "-1", "--format=%at", lastTag}) - out := strings.Join(result.Stdout, "\n") - out = strings.TrimSpace(out) - - // Convert the string to an integer - gitTagTimestampInt, err := strconv.ParseInt(out, 10, 64) - if err != nil { - fmt.Println("Error converting timestamp:", err) - return - } - - // Parse the Unix timestamp into a time.Time object - gitTagDate := time.Unix(gitTagTimestampInt, 0) - - // Get the current time - currentTime := time.Now() - - // Calculate the duration between the git tag date and the current time - duration := currentTime.Sub(gitTagDate) - - // s := fmt.Sprint(duration) - // fmt.Println("Duration since the git tag date:", s) - - // fmt.Println("Default formatting:", duration.String()) - // fmt.Println("Custom formatting:", formatDuration(duration)) - log.Warn("found:", wrepo.path.String(), lastTag, out, formatDuration(duration)) - fmt.Fprintln(f, wrepo.path.String(), lastTag, out) - //wrepo.path.Show() - } - } -} diff --git a/listWindow.go b/listWindow.go deleted file mode 100644 index a455ed3..0000000 --- a/listWindow.go +++ /dev/null @@ -1,327 +0,0 @@ -package gowit - -import ( - "fmt" - "io/ioutil" - "net/http" - "os" - "path/filepath" - "strings" - "time" - - "go.wit.com/gui" - "go.wit.com/log" - - "go.wit.com/lib/gadgets" - "go.wit.com/lib/gui/repolist" - "go.wit.com/lib/gui/repostatus" - "go.wit.com/lib/gui/shell" -) - -var lw *gadgets.BasicWindow - -var allsections []*section - -type witRepo struct { - hidden bool - sec *section - path *gui.Node - downloadB *gui.Node - configureB *gui.Node -} - -func (w *witRepo) Show() { - w.hidden = false - w.path.Show() - w.downloadB.Show() - w.configureB.Show() -} - -func (w *witRepo) Hide() { - w.hidden = true - w.path.Hide() - w.downloadB.Hide() - w.configureB.Hide() -} - -type section struct { - name string - hidden bool - - parent *gui.Node - box *gui.Node - group *gui.Node - grid *gui.Node // where the repos are listed - hideCB *gui.Node - downloadAllB *gui.Node - witRepos []*witRepo -} - -func CheckRegistered(rs *repostatus.RepoStatus) (bool, string) { - var found bool = false - var source string - url := "https://" + rs.String() - lines := dumpURL(url) - for _, line := range lines { - // log.Info("HTTP:", i, line) - if strings.Contains(line, "\"go-import\"") { - line = strings.TrimSuffix(line, "\">") - parts := strings.Split(line, " ") - source = parts[len(parts)-1] - // log.Verbose("FOUND IMPORT:", i, source) - found = true - } - } - return found, source -} - -func myrepolist(cfgfile string) []string { - homeDir, _ := os.UserHomeDir() - cfgfile = filepath.Join(homeDir, cfgfile) - content, _ := ioutil.ReadFile(cfgfile) - out := string(content) - out = strings.TrimSpace(out) - lines := strings.Split(out, "\n") - return lines -} - -func ListWindow(view *repolist.RepoList) *gadgets.BasicWindow { - if lw != nil { - if lw.Hidden() { - lw.Show() - } else { - lw.Hide() - } - return lw - } - lw = gadgets.RawBasicWindow("go.wit.com repositories") - lw.Custom = func() { - log.Warn("got to close") - } - lw.Make() - box := lw.Box() - group := box.NewGroup("list") - group.NewButton("make new go version list", func() { - DumpVersions(view) - }) - - var lines []string - var currents *section - - currents = NewSection(group, "local "+view.Cfgfile()) - for i, line := range myrepolist(view.Cfgfile()) { - line = strings.TrimSpace(line) - if line == "" { - // skip blank lines - continue - } - if strings.HasPrefix(line, "#") { - // skip comment lines - continue - } - parts := strings.Split(line, " ") - log.Info("adding:", i, parts) - currents.add(view, parts[0]) - } - - lines = dumpURL("https://go.wit.com/list") - for i, line := range lines { - if line == "" { - continue - } - if line[0] == '#' { - currents = NewSection(group, line) - log.Warn("new group:", line) - continue - } - log.Warn(i, line) - parts := strings.Split(line, " ") - if currents != nil { - currents.add(view, parts[0]) - } - } - for i, sec := range allsections { - log.Info("section name:", sec.name, "hidden:", sec.hidden, i) - parts := strings.Split(sec.name, " ") - if len(parts) > 1 { - if parts[1] == "Applications" { - // leave expanded - } else if parts[0] == "local" { - // leave expanded - } else { - sec.Hide() - } - } - } - return lw -} - -func downloadRepo(path string) bool { - log.Info("downloading", path, "here") - os.Setenv("GO111MODULE", "off") - - homeDir, _ := os.UserHomeDir() - goSrcDir := filepath.Join(homeDir, "go/src") - - cmd := []string{"go-clone", "--recursive", "--no-work", "--go-src", path} - r := shell.PathRun(goSrcDir, cmd) - if r.Error != nil { - log.Info("go-clone failed error", r.Error) - return false - } - log.Info("go-clone worked") - return true -} - -func (r *witRepo) doDownload() bool { - /* - if me.autoDryRun.Checked() { - r.downloadB.SetLabel("uncheck --dry-run") - return false - } - */ - if r.downloadB.String() == "downloaded" { - log.Info("skipping already downloaded", r.path.String()) - r.downloadB.Disable() - return true - } - if downloadRepo(r.path.String()) { - log.Info("download", r.path.String(), "worked") - r.downloadB.SetLabel("downloaded") - r.downloadB.Disable() - } else { - r.downloadB.SetLabel("failed") - log.Info("download", r.path.String(), "failed") - return false - } - return true -} - -func (s *section) add(view *repolist.RepoList, path string) { - if s == nil { - return - } - tmp := new(witRepo) - tmp.sec = s - tmp.path = s.grid.NewLabel(path) - tmp.downloadB = s.grid.NewButton("download", func() { - lw.Disable() - tmp.doDownload() - lw.Enable() - }) - repo := view.FindRepo(path) - if repo != nil { - log.Verbose("repo is already downloaded", path) - tmp.downloadB.SetLabel("downloaded") - tmp.downloadB.Disable() - tmp.configureB = s.grid.NewButton("Configure", func() { - log.Log(WIT, "todo: open the repo window here") - }) - } - - s.grid.NextRow() - s.witRepos = append(s.witRepos, tmp) -} - -func NewSection(parent *gui.Node, desc string) *section { - news := new(section) - news.name = desc - news.parent = parent - news.box = news.parent.NewBox("bw vbox", true) - news.group = news.box.NewGroup(desc) - news.hideCB = news.box.NewCheckbox("hide") - news.hideCB.Custom = func() { - news.toggle() - } - news.downloadAllB = news.box.NewButton("download all", func() { - lw.Disable() - log.Warn("Download all here") - for i, wrepo := range news.witRepos { - log.Warn("download:", i, wrepo.path.String()) - wrepo.doDownload() - } - lw.Enable() - }) - news.grid = news.parent.NewGrid("sections", 0, 0) - allsections = append(allsections, news) - return news -} - -func (s *section) toggle() { - log.Warn(s.name) - if s.hidden { - s.hidden = false - for i, wrepo := range s.witRepos { - log.Warn(i, wrepo.path.String()) - wrepo.Show() - } - } else { - s.Hide() - } -} - -func (s *section) Hide() { - s.hidden = true - s.hideCB.SetChecked(true) - for i, wrepo := range s.witRepos { - log.Warn(i, wrepo.path.String()) - wrepo.Hide() - } -} - -/* -func dumpURL(url string) string { - resp, err := http.Get(url) - if err != nil { - return "" - } - defer resp.Body.Close() - - return resp.Body.String() - - _, err = io.Copy(os.Stdout, resp.Body) - if err != nil { - return "" - } -} -*/ - -func dumpURL(url string) []string { - resp, err := http.Get(url) - if err != nil { - return nil - } - defer resp.Body.Close() - - bodyBytes, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil - } - - return strings.Split(string(bodyBytes), "\n") -} - -func formatDuration(d time.Duration) string { - seconds := int(d.Seconds()) % 60 - minutes := int(d.Minutes()) % 60 - hours := int(d.Hours()) % 24 - days := int(d.Hours()) / 24 - - result := "" - if days > 0 { - result += fmt.Sprintf("%dd ", days) - return result - } - if hours > 0 { - result += fmt.Sprintf("%dh ", hours) - return result - } - if minutes > 0 { - result += fmt.Sprintf("%dm ", minutes) - return result - } - if seconds > 0 { - result += fmt.Sprintf("%ds", seconds) - } - return result -}