about summary refs log tree commit diff
path: root/tools/govanity
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-10-08 10:15:46 -0700
committerFranck Cuny <franck@fcuny.net>2022-10-08 10:15:46 -0700
commit347a1e19231b83c3ae8ace1fd32a05d2f8f54905 (patch)
treed8add10ee8a9040ea4c403fd3665b3dc8209a506 /tools/govanity
parentci: add GitHub action to update flakes and dependabot (diff)
downloadworld-347a1e19231b83c3ae8ace1fd32a05d2f8f54905.tar.gz
ref(tools/govanity): moved back to its own repository
It's back at https://github.com/fcuny/govanity
Diffstat (limited to 'tools/govanity')
-rw-r--r--tools/govanity/Dockerfile30
-rw-r--r--tools/govanity/README.org11
-rw-r--r--tools/govanity/default.nix30
-rw-r--r--tools/govanity/e2e_test.go31
-rw-r--r--tools/govanity/fly.toml34
-rw-r--r--tools/govanity/go.mod5
-rw-r--r--tools/govanity/go.sum3
-rw-r--r--tools/govanity/main.go134
-rw-r--r--tools/govanity/templates/index.html.tpl14
-rw-r--r--tools/govanity/templates/module.html.tpl12
-rw-r--r--tools/govanity/vanity.yaml7
11 files changed, 0 insertions, 311 deletions
diff --git a/tools/govanity/Dockerfile b/tools/govanity/Dockerfile
deleted file mode 100644
index 20df29f..0000000
--- a/tools/govanity/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-FROM golang:1.16 AS builder
-
-ENV USER=app
-RUN adduser \
-    --disabled-password \
-    --gecos "" \
-    --home "/src" \
-    --shell "/sbin/nologin" \
-    --uid "10001" \
-    "${USER}"
-
-WORKDIR /src
-
-ADD go.mod /src
-ADD go.sum /src
-RUN go mod download
-
-ADD . /src
-
-RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -a -installsuffix cgo -ldflags '-extldflags "-static"' -o app .
-
-FROM scratch
-COPY --from=builder /src/app /vanity
-COPY --from=builder /src/vanity.yaml /vanity.yaml
-COPY --from=builder /etc/passwd /etc/passwd
-COPY --from=builder /etc/group /etc/group
-
-USER app:app
-
-ENTRYPOINT ["/vanity"]
diff --git a/tools/govanity/README.org b/tools/govanity/README.org
deleted file mode 100644
index b61021e..0000000
--- a/tools/govanity/README.org
+++ /dev/null
@@ -1,11 +0,0 @@
-A service to manage vanity URLs for go packages.
-
-It makes it possible to install tools like this:
-#+begin_src sh
-GOPRIVATE=1 go install -v golang.fcuny.net/tools/cmd/music-organizer@latest
-#+end_src
-
-* Deployment
-To update the application with the most recent code, run =nix run .#tools.govanity.deploy= from the root directory.
-* Configuration
-Add repositories to the [[file+sys:vanity.yaml][configuration file]].
diff --git a/tools/govanity/default.nix b/tools/govanity/default.nix
deleted file mode 100644
index 750b91f..0000000
--- a/tools/govanity/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ pkgs, buildGoModule, ... }:
-
-buildGoModule rec {
-  name = "govanity";
-  src = ./.;
-  vendorSha256 = "sha256-iu2QE+vvenFWpOOz1NHVQHudiWkvkKqZvD4ZX4Xa1sY=";
-  nativeBuildInputs = with pkgs; [ go ];
-
-  deploy = pkgs.pkgs.writeShellScriptBin "run-deploy" ''
-    set -euo pipefail
-    export PATH=${pkgs.lib.makeBinPath [ pkgs.go pkgs.flyctl ]}:$PATH
-
-    cd ${src}
-
-    # run the tests, if they fail, we bail
-    echo "running tests ...."
-    ${pkgs.go}/bin/go test -v
-
-    echo "deploying ...."
-    ${pkgs.flyctl}/bin/flyctl deploy
-  '';
-
-  meta = with pkgs.lib; {
-    description = "simple server for golang packages";
-    homepage = "https://golang.fcuny.net";
-    license = licenses.mit;
-    platforms = platforms.linux;
-    maintainers = [ ];
-  };
-}
diff --git a/tools/govanity/e2e_test.go b/tools/govanity/e2e_test.go
deleted file mode 100644
index 157bcc2..0000000
--- a/tools/govanity/e2e_test.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package main
-
-import (
-	"net"
-	"net/http"
-	"testing"
-)
-
-func TestConfigurationURL(t *testing.T) {
-	// we try a DNS resolution first. If it fails, it means we're
-	// likely in the sandbox, and we need to skip this test.
-	_, err := net.LookupHost("fcuny.net")
-	if err != nil {
-		t.Skipf("no network connectivity: %v", err)
-	}
-
-	cfg, err := loadConfig()
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	for _, r := range cfg.Repositories {
-		res, err := http.Get(r.Repo)
-		if err != nil {
-			t.Errorf("failed to request %s: %v", r.Repo, err)
-		}
-		if res.StatusCode != http.StatusOK {
-			t.Errorf("HTTP status for %s is: %d - %s", r.Repo, res.StatusCode, res.Status)
-		}
-	}
-}
diff --git a/tools/govanity/fly.toml b/tools/govanity/fly.toml
deleted file mode 100644
index 286cd1e..0000000
--- a/tools/govanity/fly.toml
+++ /dev/null
@@ -1,34 +0,0 @@
-app = "golang-fcuny-net"
-
-kill_signal = "SIGINT"
-kill_timeout = 5
-
-[env]
-
-[experimental]
-  allowed_public_ports = []
-  auto_rollback = true
-
-[[services]]
-  internal_port = 8080
-  protocol = "tcp"
-  script_checks = []
-
-  [services.concurrency]
-    hard_limit = 25
-    soft_limit = 20
-    type = "connections"
-
-  [[services.ports]]
-    handlers = ["http"]
-    port = 80
-
-  [[services.ports]]
-    handlers = ["tls", "http"]
-    port = 443
-
-  [[services.tcp_checks]]
-    grace_period = "1s"
-    interval = "15s"
-    restart_limit = 6
-    timeout = "2s"
diff --git a/tools/govanity/go.mod b/tools/govanity/go.mod
deleted file mode 100644
index d37f146..0000000
--- a/tools/govanity/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module golang.fcuny.net/vanity
-
-go 1.16
-
-require gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
diff --git a/tools/govanity/go.sum b/tools/govanity/go.sum
deleted file mode 100644
index 97f8991..0000000
--- a/tools/govanity/go.sum
+++ /dev/null
@@ -1,3 +0,0 @@
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
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())
-	}
-}
diff --git a/tools/govanity/templates/index.html.tpl b/tools/govanity/templates/index.html.tpl
deleted file mode 100644
index fd8fc56..0000000
--- a/tools/govanity/templates/index.html.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>golang repo</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-  </head>
-  <body>
-    <ul>
-      {{ range $idx, $m := .Repositories }}
-      <li>go get <a href="{{ $m.Repo }}">{{ $.BaseUrl }}/{{ $m.Name }}/</a></li>
-      {{end}}
-    </ul>
-  </body>
-</html>
diff --git a/tools/govanity/templates/module.html.tpl b/tools/govanity/templates/module.html.tpl
deleted file mode 100644
index fab3414..0000000
--- a/tools/govanity/templates/module.html.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>{{.Name}}: golang repo</title>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <meta name="go-import" content="{{.BaseUrl}}/{{.Name}} {{.VCS}} {{.Repo}}">
-    <meta name="go-source" content="{{.BaseUrl}}/{{.Name}} _ {{.Repo}}/src{/dir} {{.Repo}}/src{/dir}/{file}/#L{line}">
-  </head>
-  <body>
-    go get {{.BaseUrl}}/{{.Name}}
-  </body>
-</html>
diff --git a/tools/govanity/vanity.yaml b/tools/govanity/vanity.yaml
deleted file mode 100644
index 29ffd1c..0000000
--- a/tools/govanity/vanity.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-baseUrl: golang.fcuny.net
-vcs: git
-repositories:
-  - name: vanity
-    repo: https://git.fcuny.net/world/tree/tools/govanity
-  - name: mpd-stats
-    repo: https://git.fcuny.net/world/tree/tools/mpd-stats