Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/GoogleCloudPlatform/govanityurls
Use a custom domain in your Go import path
https://github.com/GoogleCloudPlatform/govanityurls
appengine-go go golang
Last synced: 2 months ago
JSON representation
Use a custom domain in your Go import path
- Host: GitHub
- URL: https://github.com/GoogleCloudPlatform/govanityurls
- Owner: GoogleCloudPlatform
- License: apache-2.0
- Created: 2017-06-26T17:56:30.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-08-20T14:22:39.000Z (5 months ago)
- Last Synced: 2024-10-29T18:37:09.468Z (3 months ago)
- Topics: appengine-go, go, golang
- Language: Go
- Homepage:
- Size: 245 KB
- Stars: 522
- Watchers: 24
- Forks: 131
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://cloud.google.com/sdk/downloads) and install Go App Engine component:
```
$ gcloud components install app-engine-go
```Setup a [custom domain](https://cloud.google.com/appengine/docs/standard/python/using-custom-domains-and-ssl) 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](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 themax-age
directive sent in theCache-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 thego-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 ingo-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 ingo-import
meta tag. This can be one ofgit
,hg
,svn
, orbzr
.