From 77b5d97a19bb66051fdd9e65e991922469104972 Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Mon, 25 May 2015 14:28:50 +0200 Subject: [PATCH] Added color, README and Dockerfile --- Dockerfile | 11 +++++++++++ README.md | 30 ++++++++++++++++++++++++++++++ assets/badgeTemplate.tpl | 2 +- main.go | 10 ++++++++-- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100644 README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..63bfc36 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM gliderlabs/alpine:3.1 + +MAINTAINER Knut Ahlers + +RUN apk --update add wget && \ + wget --no-check-certificate https://gobuilder.me/get/github.com/Luzifer/badge-gen/badge-gen_master_linux-386.zip && \ + unzip badge-gen_master_linux-386.zip + +ENV PORT 3000 +EXPOSE 3000 +ENTRYPOINT ["/badge-gen/badge-gen"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..3c65c65 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# Luzifer / badge-gen + +Ever ran into this scenario? You wanted to add a link to something to your GitHub project using a nice button like the Godoc or the Travis-CI button but you was not able to find a button for this having the text you wanted? I did. I wanted to add a button "API Documentation" to one of my projects and did not find any button with that caption. So I wrote it myself. + +And I wasn't myself if I would allow me to do the same work twice or more often so I wrote a small webserver able to generate those buttons with a customizable text in SVG (I did not care about older browser since long ago)… + +## Usage + +### Using my version + +Simple use this URL: + +``` +http://badge.luzifer.io/v1/badge?title=API&text=Documentation&color=4c1 +``` + +![YourTitle](http://badge.luzifer.io/v1/badge?title=API&text=Documentation&color=4c1)] + +Parameters `title` and `text` are free-text strings while `color` has to be 3- or 6-letter hex notation for colors like that one you use in CSS. + +To embed them into Markdown pages like this `README.md`: + +``` +![YourTitle](http://badge.luzifer.io/v1/badge?title=API&text=Documentation&color=4c1)] +``` + +### Using your own hosted version + +- There is a [Docker container](https://registry.hub.docker.com/u/luzifer/bage-gen/) for it. Just start it and use your own URL +- You also can download the binary from [GoBuilder.me](https://gobuilder.me/github.com/Luzifer/badge-gen) and use that one diff --git a/assets/badgeTemplate.tpl b/assets/badgeTemplate.tpl index c244303..ed279ae 100644 --- a/assets/badgeTemplate.tpl +++ b/assets/badgeTemplate.tpl @@ -9,7 +9,7 @@ - + diff --git a/main.go b/main.go index b99c5e0..e03f862 100644 --- a/main.go +++ b/main.go @@ -31,20 +31,25 @@ func main() { func generateBadge(res http.ResponseWriter, r *http.Request) { title := r.URL.Query().Get("title") text := r.URL.Query().Get("text") + color := r.URL.Query().Get("color") if title == "" || text == "" { http.Error(res, "You must specify parameters 'title' and 'text'.", http.StatusInternalServerError) return } - badge := createBadge(title, text) + if color == "" { + color = "4c1" + } + + badge := createBadge(title, text, color) res.Header().Add("Content-Type", "image/svg+xml") res.Header().Add("Cache-Control", "public, max-age=31536000") res.Write(badge) } -func createBadge(title, text string) []byte { +func createBadge(title, text, color string) []byte { var buf bytes.Buffer bufw := bufio.NewWriter(&buf) @@ -63,6 +68,7 @@ func createBadge(title, text string) []byte { "Text": text, "TitleAnchor": titleW/2 + xSpacing, "TextAnchor": titleW + textW/2 + 3*xSpacing, + "Color": color, }) bufw.Flush()