Update vendor dir and Godeps.json with new Godep
This commit is contained in:
83
vendor/github.com/mvdan/xurls/cmd/xurls/main.go
generated
vendored
83
vendor/github.com/mvdan/xurls/cmd/xurls/main.go
generated
vendored
@@ -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)
|
||||
}
|
70
vendor/github.com/mvdan/xurls/generate/regexgen/main.go
generated
vendored
70
vendor/github.com/mvdan/xurls/generate/regexgen/main.go
generated
vendored
@@ -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)
|
||||
}
|
||||
}
|
140
vendor/github.com/mvdan/xurls/generate/tldsgen/main.go
generated
vendored
140
vendor/github.com/mvdan/xurls/generate/tldsgen/main.go
generated
vendored
@@ -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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user