Compare commits

...

No commits in common. 'master' and 'gh-pages' have entirely different histories.

4
.gitattributes vendored

@ -1,4 +0,0 @@
tmpl/assets/* linguist-vendored
*.js linguist-vendored
*.css linguist-vendored
*.html linguist-vendored

@ -1,20 +0,0 @@
Please check if what you want to add to `awesome-go` list meets [quality standards](https://github.com/avelino/awesome-go/blob/master/CONTRIBUTING.md#quality-standard) before sending pull request. Thanks!
**Please provide package links to:**
- github.com repo:
- godoc.org:
- goreportcard.com:
- coverage service link (gocover, coveralls etc.):
**Note**: that new categories can be added only when there are 3 packages or more.
**Make sure that you've checked the boxes below before you submit PR:**
- [ ] I have added my package in alphabetical order
- [ ] I know that this package was not listed before
- [ ] I have added godoc link to the repo and to my pull request
- [ ] I have added coverage service link to the repo and to my pull request
- [ ] I have added goreportcard link to the repo and to my pull request
- [ ] I have read [Contribution guidelines](https://github.com/avelino/awesome-go/blob/master/CONTRIBUTING.md#contribution-guidelines) and [Quality standard](https://github.com/avelino/awesome-go/blob/master/CONTRIBUTING.md#quality-standard).
Thanks for your PR, you're awesome! :+1:

2
.gitignore vendored

@ -1,2 +0,0 @@
tmpl/index.html
awesome-go

@ -1,12 +0,0 @@
language: go
go:
- 1.7
sudo: false
install:
- go get github.com/russross/blackfriday
- go get github.com/PuerkitoBio/goquery
- go get github.com/gorilla/mux
- go get github.com/microcosm-cc/bluemonday

@ -0,0 +1 @@
awesome-go.com

@ -1,49 +0,0 @@
This resource was made by the Go community and wouldn't be possible without you! We appreciate and recognize [all contributors](https://github.com/avelino/awesome-go/graphs/contributors).
Join us on IRC at **#awesome-go** on freenode [web access](http://webchat.freenode.net/?channels=awesome-go)
# Contribution Guidelines
- **To add, remove, or change things on the list:** Submit a pull request
To set this list apart from and complement the excellent [Go wiki Projects page](https://golang.org/wiki/Projects), awesome-go is a specially curated list for high-quality, actively maintained Go packages and resources.
- List items should be sorted *alphabetically*.
- Each item should be limited to one link.
- The link should be the name of the package or project.
- Descriptions should be clear, concise, and non-promotional.
- Descriptions should follow the link, on the same line.
- At least 3 items are needed to create a new category.
Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries.
If you removed our PR template you can find it [here](https://github.com/avelino/awesome-go/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
## Quality standards
To be on the list, project repositories should adhere to these quality standards (http://goreportcard.com/report/**github_user**/**github_repo**):
- Code functions as documented and expected
- Generally useful to the wider community of Go programmers
- Actively maintained
- Regular, recent commits
- Or, for finished projects, issues and pull requests are responded to
- Stable or progressing toward stable
- Thoroughly documented (README, godoc comments, etc.)
- Tests, where practical. If the library/program is testable, then coverage should be >= 80% for non-data-related packages and >=90% for data related packages. **Notice**: the tests will be reviewed too. We will check your coverage manually if your package's coverage is just a benchmark results.
## Maintainers
To make sure every PR is checked, we have [team maintainers](MAINTAINERS). Every PR MUST be reviewed by at least two maintainers before it can get merged.
## Reporting issues
Please open an issue if you would like to discuss anything that could be improved or have suggestions for making the list a more valuable resource. We realize sometimes packages fall into abandonment or have breaking builds for extended periods of time, so if you see that, feel free to change its listing or let us know. We also realize that sometimes projects are just going through transitions or are more experimental in nature. These can still be cool, but we can indicate them as transitory or experimental.
Removal changes will not be applied until they have been pending for a minimum of 1 week (7 days). This grace window benefits projects that may be going through a temporary transition but are otherwise worthy of being on the list.
Thanks everyone!

@ -1,8 +0,0 @@
FROM golang:alpine
RUN apk add --update -t build-deps curl go git libc-dev gcc libgcc
RUN go get github.com/russross/blackfriday github.com/gorilla/mux
WORKDIR /srv
CMD ["go", "run", "repo.go"]

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2014 Thiago Avelino
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -1,8 +0,0 @@
Avelino <thiago@avelino.xxx> (@avelino)
Duke <emersonalmeidax@gmail.com> (@dukex)
Dmitri Shuralyov <shurcooL@gmail.com> (@shurcooL)
Dobrosław Żybort <matrixik@gmail.com> (@matrixik)
Dean Karn <Dean.Karn@gmail.com> (@joeybloggs)
Kirill Danshin <k@guava.by> (@kirillDanshin)
Felipe Oliveira <felipeweb.programador@gmail.com> (@felipeweb)
Bo-Yi Wu <appleboy.tw@gmail.com> (@appleboy)

File diff suppressed because it is too large Load Diff

@ -0,0 +1,26 @@
var getFileData = function(url) {
$.ajax({
url: url,
headers: {
"Accept": "application/vnd.github.v3.raw"
}
}).done(function(data) {
// var converter = new showdown.Converter({literalMidWordUnderscores: true});
// var html = converter.makeHtml(data);
var html = '<img src="https://cdn.rawgit.com/sindresorhus/awesome/master/media/logo.png" class="awesome-logo">';
html += marked(data);
$("#content").html(html);
})
};
$(document).ready(function(){
$.getJSON("https://api.github.com/repos/avelino/awesome-go/git/trees/HEAD").
done(function(data){
for (var i = data.tree.length - 1; i >= 0; i--) {
if(data.tree[i].path == "README.md") {
getFileData(data.tree[i].url);
break;
}
};
});
});

@ -1,15 +0,0 @@
version: "2"
services:
caddy:
image: abiosoft/caddy
volumes:
- ./tmpl:/srv
ports:
- 80:2015
webhook:
build: ./
volumes:
- ./:/srv
ports:
- 9000:9000

@ -6,21 +6,16 @@
<meta http-equiv="Content-Language" content="en">
<meta name="viewport" content="width=device-width">
<title>Awesome Go</title>
<meta name="description" content="A curated list of awesome Go frameworks, libraries and software">
<meta name="keywords" content="golang, go, awesome, awesome-go, go framework, golang framework">
<link rel="stylesheet" type="text/css" href="/assets/fonts/firasans.css">
<link rel="stylesheet" type="text/css" href="/assets/normalize.css">
<link rel="stylesheet" type="text/css" href="/assets/awesome-go.css">
<link rel="stylesheet" type="text/css" href="http://webfonts.ru/import/firasans.css">
<link rel="stylesheet" type="text/css" href="assets/normalize.css">
<link rel="stylesheet" type="text/css" href="assets/awesome-go.css">
</head>
<body>
<img src="/assets/logo.png" alt="Awesome Go" class="awesome-logo" />
<div id="content">
{{.Body}}
</div>
<script src="/assets/jquery-custom.min.js"></script>
<script src="/assets/marked.js"></script>
<div id="content"></div>
<script src="assets/jquery-custom.min.js"></script>
<script src="https://cdn.rawgit.com/chjj/marked/master/lib/marked.js"></script>
<script src="assets/awesome-go.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

@ -1,91 +0,0 @@
package main
import (
"io/ioutil"
"net/http"
"os"
"os/exec"
"text/template"
"github.com/gorilla/mux"
"github.com/microcosm-cc/bluemonday"
"github.com/russross/blackfriday"
)
// memory usage optimizations
const (
emtyStr = ""
git = "git"
checkout = "checkout"
force = "-f"
pull = "pull"
// options
readmePath = "./README.md"
tplPath = "tmpl/tmpl.html"
idxPath = "tmpl/index.html"
bfHTMLRendererOpts = 0 |
blackfriday.HTML_USE_XHTML |
blackfriday.HTML_USE_SMARTYPANTS |
blackfriday.HTML_SMARTYPANTS_FRACTIONS |
blackfriday.HTML_SMARTYPANTS_DASHES |
blackfriday.HTML_SMARTYPANTS_LATEX_DASHES
bfMDOpts = 0 |
blackfriday.EXTENSION_NO_INTRA_EMPHASIS |
blackfriday.EXTENSION_TABLES |
blackfriday.EXTENSION_FENCED_CODE |
blackfriday.EXTENSION_AUTOLINK |
blackfriday.EXTENSION_STRIKETHROUGH |
blackfriday.EXTENSION_SPACE_HEADERS |
blackfriday.EXTENSION_HEADER_IDS |
blackfriday.EXTENSION_BACKSLASH_LINE_BREAK |
blackfriday.EXTENSION_DEFINITION_LISTS |
blackfriday.EXTENSION_AUTO_HEADER_IDS
)
var (
doneResp = []byte("Done!\n")
)
type content struct {
Body string
}
func generateHTML() {
// Update repo
exec.Command(git, checkout, force).Output()
exec.Command(git, pull).Output()
input, _ := ioutil.ReadFile(readmePath)
body := string(
bluemonday.UGCPolicy().SanitizeBytes(
blackfriday.Markdown(
input,
blackfriday.HtmlRenderer(
bfHTMLRendererOpts,
emtyStr,
emtyStr,
),
bfMDOpts,
),
),
)
c := &content{Body: body}
t := template.Must(template.ParseFiles(tplPath))
f, _ := os.Create(idxPath)
t.Execute(f, c)
}
func hookHandler(w http.ResponseWriter, r *http.Request) {
go generateHTML()
w.Write(doneResp)
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/hook", hookHandler)
http.ListenAndServe(":9000", r)
}

@ -1,92 +0,0 @@
package main
import (
"bytes"
"io/ioutil"
"sort"
"strings"
"testing"
"github.com/PuerkitoBio/goquery"
"github.com/russross/blackfriday"
)
func TestAlpha(t *testing.T) {
query := startQuery()
query.Find("body > ul").Each(func(_ int, s *goquery.Selection) {
testList(t, s)
})
}
func TestDuplicatedLinks(t *testing.T) {
query := startQuery()
links := make(map[string]bool, 0)
query.Find("body a").Each(func(_ int, s *goquery.Selection) {
t.Run(s.Text(), func(t *testing.T) {
href, ok := s.Attr("href")
if !ok {
t.Error("expected to have href")
}
if links[href] {
t.Fatalf("duplicated link '%s'", href)
}
links[href] = true
})
})
}
func testList(t *testing.T, list *goquery.Selection) {
list.Find("ul").Each(func(_ int, items *goquery.Selection) {
testList(t, items)
items.RemoveFiltered("ul")
})
category := list.Prev().Text()
t.Run(category, func(t *testing.T) {
checkAlphabeticOrder(t, list)
})
}
func readme() []byte {
input, err := ioutil.ReadFile("./README.md")
if err != nil {
panic(err)
}
html := append([]byte("<body>"), blackfriday.MarkdownCommon(input)...)
html = append(html, []byte("</body>")...)
return html
}
func startQuery() *goquery.Document {
buf := bytes.NewBuffer(readme())
query, err := goquery.NewDocumentFromReader(buf)
if err != nil {
panic(err)
}
return query
}
func checkAlphabeticOrder(t *testing.T, s *goquery.Selection) {
items := s.Find("li > a:first-child").Map(func(_ int, li *goquery.Selection) string {
return strings.ToLower(li.Text())
})
sorted := make([]string, len(items))
copy(sorted, items)
sort.Strings(sorted)
for k, item := range items {
if item != sorted[k] {
t.Errorf("expected '%s' but actual is '%s'", sorted[k], item)
}
}
if t.Failed() {
t.Logf("expected order is:\n%s", strings.Join(sorted, "\n"))
}
}

@ -1,140 +0,0 @@
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans ExtraLight'),
local('FiraSans-ExtraLight'),
url('/assets/fonts/firasansextralight.woff2') format('woff2'),
url('/assets/fonts/firasansextralight.woff') format('woff'),
url('/assets/fonts/firasansextralight.ttf') format('truetype');
font-weight: 100;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans ExtraLight Italic'),
local('FiraSans-ExtraLightItalic'),
url('/assets/fonts/firasansextralightitalic.woff2') format('woff2'),
url('/assets/fonts/firasansextralightitalic.woff') format('woff'),
url('/assets/fonts/firasansextralightitalic.ttf') format('truetype');
font-weight: 100;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Light'),
local('FiraSans-Light'),
url('/assets/fonts/firasanslight.woff2') format('woff2'),
url('/assets/fonts/firasanslight.woff') format('woff'),
url('/assets/fonts/firasanslight.ttf') format('truetype');
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Light Italic'),
local('FiraSans-LightItalic'),
url('/assets/fonts/firasanslightitalic.woff2') format('woff2'),
url('/assets/fonts/firasanslightitalic.woff') format('woff'),
url('/assets/fonts/firasanslightitalic.ttf') format('truetype');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Book'),
local('FiraSans-Book'),
url('/assets/fonts/firasansbook.woff2') format('woff2'),
url('/assets/fonts/firasansbook.woff') format('woff'),
url('/assets/fonts/firasansbook.ttf') format('truetype');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Book Italic'),
local('FiraSans-BookItalic'),
url('/assets/fonts/firasansbookitalic.woff2') format('woff2'),
url('/assets/fonts/firasansbookitalic.woff') format('woff'),
url('/assets/fonts/firasansbookitalic.ttf') format('truetype');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans'),
local('FiraSans-Regular'),
url('/assets/fonts/firasans.woff2') format('woff2'),
url('/assets/fonts/firasans.woff') format('woff'),
url('/assets/fonts/firasans.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Italic'),
local('FiraSans-Italic'),
url('/assets/fonts/firasansitalic.woff2') format('woff2'),
url('/assets/fonts/firasansitalic.woff') format('woff'),
url('/assets/fonts/firasansitalic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Medium'),
local('FiraSans-Medium'),
url('/assets/fonts/firasansmedium.woff2') format('woff2'),
url('/assets/fonts/firasansmedium.woff') format('woff'),
url('/assets/fonts/firasansmedium.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Medium Italic'),
local('FiraSans-MediumItalic'),
url('/assets/fonts/firasansmediumitalic.woff2') format('woff2'),
url('/assets/fonts/firasansmediumitalic.woff') format('woff'),
url('/assets/fonts/firasansmediumitalic.ttf') format('truetype');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans SemiBold'),
local('FiraSans-SemiBold'),
url('/assets/fonts/firasanssemibold.woff2') format('woff2'),
url('/assets/fonts/firasanssemibold.woff') format('woff'),
url('/assets/fonts/firasanssemibold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans SemiBold Italic'),
local('FiraSans-SemiBoldItalic'),
url('/assets/fonts/firasanssemibolditalic.woff2') format('woff2'),
url('/assets/fonts/firasanssemibolditalic.woff') format('woff'),
url('/assets/fonts/firasanssemibolditalic.ttf') format('truetype');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Bold'),
local('FiraSans-Bold'),
url('/assets/fonts/firasansbold.woff2') format('woff2'),
url('/assets/fonts/firasansbold.woff') format('woff'),
url('/assets/fonts/firasansbold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Fira Sans';
src: local('Fira Sans Bold Italic'),
local('FiraSans-BoldItalic'),
url('/assets/fonts/firasansbolditalic.woff2') format('woff2'),
url('/assets/fonts/firasansbolditalic.woff') format('woff'),
url('/assets/fonts/firasansbolditalic.ttf') format('truetype');
font-weight: 700;
font-style: italic;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

@ -1 +0,0 @@
User-Agent: *

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://www.awesome-go.com/</loc>
<lastmod>2016-10-10T07:39:03+00:00</lastmod>
</url>
</urlset>
Loading…
Cancel
Save