You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Marvin Preuss 9093028184
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci: from drone to woodpecker
2 years ago
vendor Update to use app engine runtime go112 (#34) 4 years ago
.travis.yml Update to use app engine runtime go112 (#34) 4 years ago
.woodpecker.yml ci: from drone to woodpecker 2 years ago
CONTRIBUTING.md initial commit 7 years ago
Dockerfile adds EXPOSE to dockerfile 3 years ago
LICENSE add LICENSE 7 years ago
README.md Fix go get command (#37) 4 years ago
app.yaml Update to use app engine runtime go112 (#34) 4 years ago
go.mod Update to use app engine runtime go112 (#34) 4 years ago
go.sum Update to use app engine runtime go112 (#34) 4 years ago
handler.go handler: use pkg.go.dev instead of golang.org (#33) 4 years ago
handler_test.go handler: use longest prefix, shortest subpath matches to query if no route is found (#19) 6 years ago
main.go Update to use app engine runtime go112 (#34) 4 years ago
vanity.yaml add custom domain to vanity.yaml 7 years ago

README.md

Go Vanity URLs

Go Vanity URLs is a simple Go server that allows you to set custom import paths for your Go packages. It also can run on Google App Engine.

Quickstart

Install and run the binary:

$ go get -u github.com/GoogleCloudPlatform/govanityurls
$ # update vanity.yaml
$ govanityurls
$ # open http://localhost:8080

Google App Engine

Install gcloud and install Go App Engine component:

$ gcloud components install app-engine-go

Setup a custom domain for your app.

Get the application:

git clone https://github.com/GoogleCloudPlatform/govanityurls
cd govanityurls

Edit vanity.yaml to add any number of git repos. E.g., customdomain.com/portmidi will serve the https://github.com/rakyll/portmidi repo.

paths:
  /portmidi:
    repo: https://github.com/rakyll/portmidi

You can add as many rules as you wish.

Deploy the app:

$ gcloud app deploy

That's it! You can use go get to get the package from your custom domain.

$ go get customdomain.com/portmidi

Running in other environments

You can also deploy this as an App Engine Flexible app by changing the app.yaml file:

runtime: go
env: flex

This project is a normal Go HTTP server, so you can also incorporate the handler into larger Go servers.

Configuration File

host: example.com
cache_max_age: 3600
paths:
  /foo:
    repo: https://github.com/example/foo
    display: "https://github.com/example/foo https://github.com/example/foo/tree/master{/dir} https://github.com/example/foo/blob/master{/dir}/{file}#L{line}"
    vcs: git
Key Required Description
cache_max_age optional The amount of time to cache package pages in seconds. Controls the max-age directive sent in the Cache-Control HTTP header.
host optional Host name to use in meta tags. If omitted, uses the App Engine default version host or the Host header on non-App Engine Standard environments. You can use this option to fix the host when using this service behind a reverse proxy or a custom dispatch file.
paths required Map of paths to path configurations. Each key is a path that will point to the root of a repository hosted elsewhere. The fields are documented in the Path Configuration section below.

Path Configuration

Key Required Description
display optional The last three fields of the go-source meta tag. If omitted, it is inferred from the code hosting service if possible.
repo required Root URL of the repository as it would appear in go-import meta tag.
vcs required if ambiguous If the version control system cannot be inferred (e.g. for Bitbucket or a custom domain), then this specifies the version control system as it would appear in go-import meta tag. This can be one of git, hg, svn, or bzr.