Update vendor dir and Godeps.json with new Godep

This commit is contained in:
saadali
2016-05-11 16:59:55 -07:00
parent b83af3d481
commit c708e2cc82
2053 changed files with 955 additions and 140589 deletions

View File

@@ -1,83 +0,0 @@
// Copyright (c) 2015, Daniel Martí <mvdan@mvdan.cc>
// See LICENSE for licensing information
package main
import (
"bufio"
"flag"
"fmt"
"os"
"regexp"
"github.com/mvdan/xurls"
)
var (
matching = flag.String("m", "", "")
relaxed = flag.Bool("r", false, "")
)
func init() {
flag.Usage = func() {
p := func(format string, a ...interface{}) {
fmt.Fprintf(os.Stderr, format, a...)
}
p("Usage: xurls [-h] [files]\n\n")
p("If no files are given, it reads from standard input.\n\n")
p(" -m <regexp> only match urls whose scheme matches a regexp\n")
p(" example: 'https?://|mailto:'\n")
p(" -r also match urls without a scheme (relaxed)\n")
}
}
func scanPath(re *regexp.Regexp, path string) error {
r := os.Stdin
if path != "-" {
f, err := os.Open(path)
if err != nil {
return err
}
defer f.Close()
r = f
}
scanner := bufio.NewScanner(r)
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
word := scanner.Text()
for _, match := range re.FindAllString(word, -1) {
fmt.Println(match)
}
}
return scanner.Err()
}
func main() {
flag.Parse()
if *relaxed && *matching != "" {
errExit(fmt.Errorf("-r and -m at the same time don't make much sense"))
}
re := xurls.Strict
if *relaxed {
re = xurls.Relaxed
} else if *matching != "" {
var err error
if re, err = xurls.StrictMatchingScheme(*matching); err != nil {
errExit(err)
}
}
args := flag.Args()
if len(args) == 0 {
args = []string{"-"}
}
for _, path := range args {
if err := scanPath(re, path); err != nil {
errExit(err)
}
}
}
func errExit(err error) {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}

View File

@@ -1,70 +0,0 @@
// Copyright (c) 2015, Daniel Martí <mvdan@mvdan.cc>
// See LICENSE for licensing information
package main
import (
"log"
"os"
"sort"
"strings"
"text/template"
"golang.org/x/net/idna"
"github.com/mvdan/xurls"
)
const path = "regex.go"
var regexTmpl = template.Must(template.New("regex").Parse(`// Generated by regexgen
package xurls
const ({{ range $key, $value := . }}
{{$key}} = ` + "`" + `{{$value}}` + "`" + `{{end}}
)
`))
func writeRegex(tlds []string) error {
allTldsSet := make(map[string]struct{})
add := func(tld string) {
if _, e := allTldsSet[tld]; e {
log.Fatalf("Duplicate TLD: %s", tld)
}
allTldsSet[tld] = struct{}{}
}
for _, tldlist := range [...][]string{tlds, xurls.PseudoTLDs} {
for _, tld := range tldlist {
add(tld)
asciiTld, err := idna.ToASCII(tld)
if err != nil {
return err
}
if asciiTld != tld {
add(asciiTld)
}
}
}
var allTlds []string
for tld := range allTldsSet {
allTlds = append(allTlds, tld)
}
sort.Strings(allTlds)
f, err := os.Create(path)
if err != nil {
return err
}
defer f.Close()
return regexTmpl.Execute(f, map[string]string{
"gtld ": `(?i)(` + strings.Join(allTlds, `|`) + `)(?-i)`,
"otherScheme": `(?i)(` + strings.Join(xurls.SchemesNoAuthority, `|`) + `)(?-i):`,
})
}
func main() {
log.Printf("Generating %s...", path)
if err := writeRegex(xurls.TLDs); err != nil {
log.Fatalf("Could not write %s: %v", path, err)
}
}

View File

@@ -1,140 +0,0 @@
// Copyright (c) 2015, Daniel Martí <mvdan@mvdan.cc>
// See LICENSE for licensing information
package main
import (
"bufio"
"errors"
"log"
"net/http"
"os"
"regexp"
"sort"
"strings"
"sync"
"text/template"
)
const path = "tlds.go"
var tldsTmpl = template.Must(template.New("tlds").Parse(`// Generated by tldsgen
package xurls
// TLDs is a sorted list of all public top-level domains.
//
// Sources:{{range $_, $url := .URLs}}
// * {{$url}}{{end}}
var TLDs = []string{
{{range $_, $tld := .TLDs}}` + "\t`" + `{{$tld}}` + "`" + `,
{{end}}}
`))
func cleanTld(tld string) string {
tld = strings.ToLower(tld)
if strings.HasPrefix(tld, "xn--") {
return ""
}
return tld
}
func fetchFromURL(url, pat string) {
defer wg.Done()
log.Printf("Fetching %s", url)
resp, err := http.Get(url)
if err == nil && resp.StatusCode >= 400 {
err = errors.New(resp.Status)
}
if err != nil {
errChan <- err
return
}
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
re := regexp.MustCompile(pat)
for scanner.Scan() {
line := scanner.Text()
tld := re.FindString(line)
tld = cleanTld(tld)
if tld == "" {
continue
}
tldChan <- tld
}
if err := scanner.Err(); err != nil {
errChan <- err
}
}
var (
wg sync.WaitGroup
tldChan = make(chan string)
errChan = make(chan error)
)
func tldList() ([]string, []string, error) {
var urls []string
fromURL := func(url, pat string) {
urls = append(urls, url)
wg.Add(1)
go fetchFromURL(url, pat)
}
fromURL("https://data.iana.org/TLD/tlds-alpha-by-domain.txt",
`^[^#]+$`)
fromURL("https://publicsuffix.org/list/effective_tld_names.dat",
`^[^/.]+$`)
tldSet := make(map[string]struct{})
anyError := false
go func() {
for {
select {
case tld := <-tldChan:
tldSet[tld] = struct{}{}
case err := <-errChan:
log.Printf("%v", err)
anyError = true
}
}
}()
wg.Wait()
if anyError {
return nil, nil, errors.New("there were some errors while fetching the TLDs")
}
tlds := make([]string, 0, len(tldSet))
for tld := range tldSet {
tlds = append(tlds, tld)
}
sort.Strings(tlds)
return tlds, urls, nil
}
func writeTlds(tlds, urls []string) error {
f, err := os.Create(path)
if err != nil {
return err
}
defer f.Close()
return tldsTmpl.Execute(f, struct {
TLDs []string
URLs []string
}{
TLDs: tlds,
URLs: urls,
})
}
func main() {
tlds, urls, err := tldList()
if err != nil {
log.Fatalf("Could not get TLD list: %v", err)
}
log.Printf("Generating %s...", path)
if err := writeTlds(tlds, urls); err != nil {
log.Fatalf("Could not write path: %v", err)
}
}