| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package main
- import (
- "context"
- "fmt"
- "net/http"
- "os"
- "text/template"
- "github.com/google/go-github/v50/github"
- )
- type Tag struct {
- TagName string
- }
- func getLatestCLIRelease() (string, error) {
- client := github.NewClient(nil)
- rel, _, err := client.Repositories.GetLatestRelease(context.Background(), "porter-dev", "porter")
- if err != nil {
- return "", err
- }
- return rel.GetTagName(), nil
- }
- func serve(w http.ResponseWriter, req *http.Request) {
- latestTag, err := getLatestCLIRelease()
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- return
- }
- contents, err := os.ReadFile("install.sh")
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- return
- }
- tmpl, err := template.New("install").Parse(string(contents))
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- return
- }
- err = tmpl.Execute(w, Tag{TagName: latestTag})
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- } else {
- w.Header().Add("Content-Type", "text/plain")
- }
- }
- func main() {
- var port string
- if port = os.Getenv("PORT"); port == "" {
- port = "80"
- }
- http.HandleFunc("/", serve)
- http.ListenAndServe(fmt.Sprintf(":%s", port), nil)
- }
|