package main import ( "embed" "fmt" "net/http" "os" "path/filepath" "time" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) // are sent via -ldflags at buildtime var VERSION string var BUILDTIME string //go:embed resources/* var resources embed.FS // var forge *forgepb.Forge var HOSTNAME string = "forge.wit.com" var LIBDIR string = "/var/lib/forged/" var FORGEDIR string = "/home/forge" func main() { if argv.Hostname != "" { HOSTNAME = argv.Hostname } // forge = forgepb.Init() if argv.Pull != nil { log.Info("do pull here") dirs, err := scanForgedDir(FORGEDIR) if err != nil { badExit(err) } os.Chdir(FORGEDIR) forge := forgepb.InitPB() log.Info("forge len", forge.Repos.Len()) forge.PrintHumanTable(forge.Repos) for i, dir := range dirs { log.Info("found repo", i, dir) // repo, err := forge.AddNamespaceDir(ns string, fullpath string) repo, err := readGitPB(dir) if err != nil { log.Info(dir, err) continue } log.Info("repo:", repo.Namespace, repo.URL) // check to see if 'git clone' has already been run _, err = os.Stat(filepath.Join(dir, "git.clone")) if os.IsNotExist(err) { log.Info("repo needs cloning", dir) if err := forgepb.RunGitClone("git.clone", dir, "https://"+repo.Namespace); err != nil { log.Info("git clone failed", err) if giturl, err := forgepb.FindGoImport("https://" + repo.Namespace); err == nil { log.Info("TRY THIS INSTEAD!!!!", giturl) if err := forgepb.RunGitClone("git.clone", dir, giturl); err != nil { log.Info("git clone still failed", giturl, err) } } } } else { log.Info("repo is already cloned", dir) } break } okExit("") } http.HandleFunc("/", okHandler) // go https() // use caddy instead p := fmt.Sprintf(":%d", argv.Port) log.Println(argv.Version(), "HOSTNAME set to:", HOSTNAME) log.Println("Running on port", "http://localhost"+p) log.Println("Running on port", "http://localhost"+p+"/ipv6.png") err := http.ListenAndServe(p, nil) if err != nil { log.Println("Error starting server:", err) } } 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 }