From 347a1e19231b83c3ae8ace1fd32a05d2f8f54905 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sat, 8 Oct 2022 10:15:46 -0700 Subject: ref(tools/govanity): moved back to its own repository It's back at https://github.com/fcuny/govanity --- tools/govanity/main.go | 134 ------------------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 tools/govanity/main.go (limited to 'tools/govanity/main.go') diff --git a/tools/govanity/main.go b/tools/govanity/main.go deleted file mode 100644 index d74db9b..0000000 --- a/tools/govanity/main.go +++ /dev/null @@ -1,134 +0,0 @@ -package main - -import ( - "bytes" - "embed" - "flag" - "fmt" - "html/template" - "io/ioutil" - "log" - "net/http" - "strings" - - "gopkg.in/yaml.v3" -) - -//go:embed templates -var tpls embed.FS - -type repository struct { - Name string `yaml:"name"` - Repo string `yaml:"repo"` -} - -type config struct { - BaseUrl string `yaml:"baseUrl"` - VCS string `yaml:"vcs"` - Repositories []repository `yaml:"repositories"` -} - -type moduleTmpl struct { - Name string - Repo string - VCS string - BaseUrl string -} - -func main() { - flag.Parse() - - cfg, err := loadConfig() - if err != nil { - log.Fatal(err) - } - - http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - w.Write([]byte("ok")) - }) - - http.HandleFunc("/", goGet(cfg)) - - log.Printf("starting web server on :8080") - log.Fatal(http.ListenAndServe(":8080", nil)) -} - -func loadConfig() (*config, error) { - configPath := "./vanity.yaml" - - configYaml, err := ioutil.ReadFile(configPath) - if err != nil { - return nil, fmt.Errorf("failed to read configuration file %s: %v", configPath, err) - } - - var cfg config - err = yaml.Unmarshal(configYaml, &cfg) - if err != nil { - return nil, fmt.Errorf("failed to unmarshall configuration: %v", err) - } - - return &cfg, nil -} - -func goGet(cfg *config) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodGet { - status := http.StatusMethodNotAllowed - http.Error(w, http.StatusText(status), status) - return - } - - if r.FormValue("go-get") == "1" { - pathParts := strings.Split(r.URL.Path, "/") - for _, m := range cfg.Repositories { - if pathParts[1] == m.Name { - goGetModule(w, r, m, cfg) - return - } - } - status := http.StatusNotFound - http.Error(w, http.StatusText(status), status) - return - } - browserURL(w, r, cfg) - } -} - -func goGetModule(w http.ResponseWriter, r *http.Request, m repository, cfg *config) { - tmpl, err := template.ParseFS(tpls, "templates/module.html.tpl") - if err != nil { - log.Fatal(err) - } - mod := moduleTmpl{ - VCS: cfg.VCS, - BaseUrl: cfg.BaseUrl, - Name: m.Name, - Repo: m.Repo, - } - var buf bytes.Buffer - if err := tmpl.Execute(&buf, mod); err != nil { - log.Printf("error: %+v", err) - status := http.StatusInternalServerError - http.Error(w, http.StatusText(status), status) - } else { - w.Header().Set("Cache-Control", "no-store") - w.Write(buf.Bytes()) - } -} - -func browserURL(w http.ResponseWriter, r *http.Request, cfg *config) { - tmpl, err := template.ParseFS(tpls, "templates/index.html.tpl") - if err != nil { - log.Fatal(err) - } - var buf bytes.Buffer - if err := tmpl.Execute(&buf, cfg); err != nil { - log.Printf("error: %+v", err) - status := http.StatusInternalServerError - http.Error(w, http.StatusText(status), status) - } else { - w.Header().Set("Cache-Control", "no-store") - w.Write(buf.Bytes()) - } -} -- cgit 1.4.1