42atomys / vanity-go

Vanity URL for your Go package at production scale

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VanityGO : Vanity import paths for Go package

Release ๐ŸŽ‰ GitHub release (latest by date) GitHub contributors GitHub Repo stars Docker Pull Docker Pull

Simple go application that allows you to share your code with a custom domain name instead of github or gitlab links or other git protocols.

Say goodbye to github.com/42Atomys/vanity-go imports. Say hello to atomys.codes/vanity-go imports ๐ŸŽ‰

When choosing a domain, keep in mind that it will be the name of your package for the foreseeable future, so choose a name that youโ€™ll still like tomorrow. People tend to choose domains with .io, .codes and .dev TLDs for their pacakges/software projects these days.

Motivation

At the beginning to clarify my code especially with gitlab and subfolders (ex: gitlab.com/subgroup-a/subgroup-b/subgroup-n/project) importing files was not sexy. And a problem occurred when the folder architecture changed!

Error 404 in all directions, in all repositories. I created a classic index.html file but having to connect to a server to do vim (sorry emacs) is very annoying.

With webhooked project, I told myself that I didn't want to redo everything, so I put this repo online

Usage

Step 1 : Configuration file

# API Version also used to protect against API or Schema changes
# Actually, the available API versions are: 1
apiVersion: 1
# List of your proxies
# You can add as many proxies as you want with logic:
# 1 proxy per final domain
proxies:
- # namespace is the domain name used for following entries
  # This can be a subdomain, a domain or a full domain name
  # subdomain.example.org, example.org or example.org/subdomain
  namespace: atomys.codes
  # All entries of this namespace will be proxied to the following address
  # Key are the name and the entrypoint/path of your proxied packages
  # Value is the current URL of your package. The Destination URL must
  # end with a valid protocol.
  # Allowed protocol are: "bzr", "fossil", "git", "hg", "svn".
  entries:
    # Root redirection can be catch with "-" or "/" as key
    # Will responds to the following URL: atomys.codes
    -: https://github.com/42Atomys/vanity-go.git
    # Redirect go-get import to atomys.codes/vanity-go
    vanity-go: https://github.com/42Atomys/vanity-go.git
    # Redirect go-get import to atomys.codes/webhooked
    webhooked: https://github.com/42Atomys/webhooked.git
    # Redirect go-get import to atomys.codes/dns-updater
    dns-updater: https://github.com/42Atomys/dns-updater.git
    # Redirect go-get import to atomys.codes/subpath/gw2api-go
    sdk/gw2api-go: https://gitlab.com/Atomys/gw2api-go.git

Step 2: Launch it ๐Ÿš€

TIPS: When you create your routing, configure it to only take into account the query params go-get=1 to follow the GoLang directive (https://pkg.go.dev/cmd/go#hdr-Remote_import_paths)

With Kubernetes

If you want to use kubernetes, for production or personnal use, refere to example/kubernetes:

https://github.com/42Atomys/vanity-go/tree/main/examples/kubernetes

With Docker image

You can use the docker image atomys/vanity-go in a very simplistic way

# Basic launch instruction using the default configuration path
docker run -it --rm -p 8080:8080 -v ${PWD}/myconfig.yaml:/config/vanity.yaml atomys/vanity-go:latest
# Use custom configuration file
docker run -it --rm -p 8080:8080 -v ${PWD}/myconfig.yaml:/myconfig.yaml atomys/vanity-go:latest serve --config /myconfig.yaml

With pre-builded binary

./vanity-go serve --config config.yaml -p 8080

To-Do

TO-Do is moving on Project Section: https://github.com/42Atomys/vanity-go/projects?type=beta

Contribution

All pull requests and issues on GitHub will welcome.

All contributions are welcome :)

Thanks

About

Vanity URL for your Go package at production scale

License:MIT License


Languages

Language:Go 96.2%Language:HTML 2.1%Language:Dockerfile 1.7%