package main import ( "fmt" "net/http" "os" "strings" "go.wit.com/lib/gui/gowit" "go.wit.com/log" ) // remove '?' part and trailing '/' func cleanURL(url string) string { url = "/" + strings.Trim(url, "/") return url } // send stuff to the socket and stdout func msg(w http.ResponseWriter, s string) { log.Info(s) fmt.Fprintln(w, s) } func okHandler(w http.ResponseWriter, r *http.Request) { var route string route = cleanURL(r.URL.Path) if route == "/help" { msg(w, "list/ list modified repos") msg(w, "list?readonly=true shows every repo") msg(w, "") msg(w, "setBranchesToMasterB maybe this sets everything to master?") msg(w, "doSingleRepo?repo=go.wit.com/gui attempts to release gui") msg(w, "") msg(w, "setVersion?repo=go.wit.com/gui?target=0.2 attempts to set the target version to 0.2") msg(w, "") return } if route == "/release" { // simpleRelease(w, r) return } if route == "/gitpull" { return } if route == "/list" { readonly := r.URL.Query().Get("readonly") onlydirty := r.URL.Query().Get("onlydirty") perfect := r.URL.Query().Get("perfect") me.repos.View.PrintReport(w, readonly, onlydirty, perfect) return } if route == "/findNext" { me.Disable() defer me.Enable() if findNext() { msg(w, "findNext() found a repo") } else { msg(w, "findNext() did not find a repo. You might be finished?") } msg(w, "repo: " + me.release.repo.String()) msg(w, "name: " + me.release.version.String()) msg(w, "notes: " + me.release.notes.String()) msg(w, "status: " + me.release.status.String()) return } if route == "/releaselist" { readonly := r.URL.Query().Get("readonly") perfect := r.URL.Query().Get("perfect") me.repos.View.PrintReleaseReport(w, readonly, perfect) return } if route == "/goweblist" { gowit.DumpVersions(me.repos.View) return } if route == "/setBranchesToMasterB" { msg(w, "set all branches to master") me.Disable() defer me.Enable() if setAllBranchesToMaster() { // if it succeeds, disable this button me.setBranchesToMasterB.Disable() } return } if route == "/doSingleRepo" { reponame := r.URL.Query().Get("repo") msg(w, "doSingleRepo: "+reponame) doSingleRepo(reponame) } if route == "/quit" { os.Exit(0) return } log.Warn("BAD URL =", route) fmt.Fprintln(w, "BAD URL =", route) } // starts and sits waiting for HTTP requests func startHTTP() { http.HandleFunc("/", okHandler) p := fmt.Sprintf(":%d", myargs.Port) log.Println("Running on port", p) err := http.ListenAndServe(p, nil) if err != nil { log.Println("Error starting server:", err) } }