Go to file
2017-08-02 22:55:53 -07:00
.travis.yml Enable non-AppEngine option and add tests (#3) 2017-07-05 13:46:56 -07:00
app.yaml header not required for config 2017-06-26 11:06:51 -07:00
appengine.go support host directive in config (#7) 2017-07-10 09:50:21 -07:00
CONTRIBUTING.md initial commit 2017-06-24 16:39:45 -07:00
handler_test.go add index handler if no package is sered at / 2017-08-02 22:55:53 -07:00
handler.go add index handler if no package is sered at / 2017-08-02 22:55:53 -07:00
LICENSE add LICENSE 2017-06-25 15:24:31 -07:00
main.go README: document new features (#8) 2017-07-10 12:17:40 -07:00
README.md README: document new features (#8) 2017-07-10 12:17:40 -07:00
vanity.yaml support host directive in config (#7) 2017-07-10 09:50:21 -07:00

Go Vanity URLs

Go Vanity URLs is a simple App Engine Go app that allows you to set custom import paths for your Go packages.

Quickstart

Install gcloud and install Go App Engine component:

$ gcloud components install app-engine-go

Setup a custom domain for your app.

Get the application:

go get -u -d github.com/GoogleCloudPlatform/govanityurls
cd $(go env GOPATH)/src/github.com/GoogleCloudPlatform/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
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
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.