aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/kevinburke/ssh_config
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/kevinburke/ssh_config')
-rw-r--r--vendor/github.com/kevinburke/ssh_config/.gitignore1
-rw-r--r--vendor/github.com/kevinburke/ssh_config/.mailmap1
-rw-r--r--vendor/github.com/kevinburke/ssh_config/.travis.yml3
-rw-r--r--vendor/github.com/kevinburke/ssh_config/AUTHORS.txt3
-rw-r--r--vendor/github.com/kevinburke/ssh_config/Makefile12
-rw-r--r--vendor/github.com/kevinburke/ssh_config/config.go40
-rw-r--r--vendor/github.com/kevinburke/ssh_config/lexer.go47
-rw-r--r--vendor/github.com/kevinburke/ssh_config/parser.go8
-rw-r--r--vendor/github.com/kevinburke/ssh_config/position.go4
9 files changed, 66 insertions, 53 deletions
diff --git a/vendor/github.com/kevinburke/ssh_config/.gitignore b/vendor/github.com/kevinburke/ssh_config/.gitignore
index a6ef824c1f..e69de29bb2 100644
--- a/vendor/github.com/kevinburke/ssh_config/.gitignore
+++ b/vendor/github.com/kevinburke/ssh_config/.gitignore
@@ -1 +0,0 @@
-/bazel-*
diff --git a/vendor/github.com/kevinburke/ssh_config/.mailmap b/vendor/github.com/kevinburke/ssh_config/.mailmap
new file mode 100644
index 0000000000..253406b1cc
--- /dev/null
+++ b/vendor/github.com/kevinburke/ssh_config/.mailmap
@@ -0,0 +1 @@
+Kevin Burke <kevin@burke.dev> Kevin Burke <kev@inburke.com>
diff --git a/vendor/github.com/kevinburke/ssh_config/.travis.yml b/vendor/github.com/kevinburke/ssh_config/.travis.yml
index 8b5964dd52..4306f30f85 100644
--- a/vendor/github.com/kevinburke/ssh_config/.travis.yml
+++ b/vendor/github.com/kevinburke/ssh_config/.travis.yml
@@ -3,9 +3,8 @@ go_import_path: github.com/kevinburke/ssh_config
language: go
go:
- - 1.9.x
- - 1.10.x
- 1.11.x
+ - 1.12.x
- master
before_script:
diff --git a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt b/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt
index 51b98f897a..cd3379400d 100644
--- a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt
+++ b/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt
@@ -1,4 +1,5 @@
Eugene Terentev <eugene@terentev.net>
-Kevin Burke <kev@inburke.com>
+Kevin Burke <kevin@burke.dev>
+Mark Nevill <nev@improbable.io>
Sergey Lukjanov <me@slukjanov.name>
Wayne Ashley Berry <wayneashleyberry@gmail.com>
diff --git a/vendor/github.com/kevinburke/ssh_config/Makefile b/vendor/github.com/kevinburke/ssh_config/Makefile
index 90c3a28616..a1880d18e1 100644
--- a/vendor/github.com/kevinburke/ssh_config/Makefile
+++ b/vendor/github.com/kevinburke/ssh_config/Makefile
@@ -1,15 +1,13 @@
BUMP_VERSION := $(GOPATH)/bin/bump_version
-MEGACHECK := $(GOPATH)/bin/megacheck
+STATICCHECK := $(GOPATH)/bin/staticcheck
WRITE_MAILMAP := $(GOPATH)/bin/write_mailmap
-IGNORES := 'github.com/kevinburke/ssh_config/config.go:U1000 github.com/kevinburke/ssh_config/config.go:S1002 github.com/kevinburke/ssh_config/token.go:U1000'
+$(STATICCHECK):
+ go get honnef.co/go/tools/cmd/staticcheck
-$(MEGACHECK):
- go get honnef.co/go/tools/cmd/megacheck
-
-lint: $(MEGACHECK)
+lint: $(STATICCHECK)
go vet ./...
- $(MEGACHECK) --ignore=$(IGNORES) ./...
+ $(STATICCHECK)
test: lint
@# the timeout helps guard against infinite recursion
diff --git a/vendor/github.com/kevinburke/ssh_config/config.go b/vendor/github.com/kevinburke/ssh_config/config.go
index f400cef9c5..136f0c35c6 100644
--- a/vendor/github.com/kevinburke/ssh_config/config.go
+++ b/vendor/github.com/kevinburke/ssh_config/config.go
@@ -34,6 +34,7 @@ import (
"errors"
"fmt"
"io"
+ "io/ioutil"
"os"
osuser "os/user"
"path/filepath"
@@ -43,7 +44,9 @@ import (
"sync"
)
-const version = "0.5"
+const version = "1.0"
+
+var _ = version
type configFinder func() string
@@ -156,6 +159,7 @@ func (u *UserSettings) GetStrict(alias, key string) (string, error) {
}
var err error
u.userConfig, err = parseFile(filename)
+ //lint:ignore S1002 I prefer it this way
if err != nil && os.IsNotExist(err) == false {
u.onceErr = err
return
@@ -166,11 +170,13 @@ func (u *UserSettings) GetStrict(alias, key string) (string, error) {
filename = u.systemConfigFinder()
}
u.systemConfig, err = parseFile(filename)
+ //lint:ignore S1002 I prefer it this way
if err != nil && os.IsNotExist(err) == false {
u.onceErr = err
return
}
})
+ //lint:ignore S1002 I prefer it this way
if u.onceErr != nil && u.IgnoreErrors == false {
return "", u.onceErr
}
@@ -190,26 +196,29 @@ func parseFile(filename string) (*Config, error) {
}
func parseWithDepth(filename string, depth uint8) (*Config, error) {
- f, err := os.Open(filename)
+ b, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
- defer f.Close()
- return decode(f, isSystem(filename), depth)
+ return decodeBytes(b, isSystem(filename), depth)
}
func isSystem(filename string) bool {
- // TODO i'm not sure this is the best way to detect a system repo
+ // TODO: not sure this is the best way to detect a system repo
return strings.HasPrefix(filepath.Clean(filename), "/etc/ssh")
}
// Decode reads r into a Config, or returns an error if r could not be parsed as
// an SSH config file.
func Decode(r io.Reader) (*Config, error) {
- return decode(r, false, 0)
+ b, err := ioutil.ReadAll(r)
+ if err != nil {
+ return nil, err
+ }
+ return decodeBytes(b, false, 0)
}
-func decode(r io.Reader, system bool, depth uint8) (c *Config, err error) {
+func decodeBytes(b []byte, system bool, depth uint8) (c *Config, err error) {
defer func() {
if r := recover(); r != nil {
if _, ok := r.(runtime.Error); ok {
@@ -223,7 +232,7 @@ func decode(r io.Reader, system bool, depth uint8) (c *Config, err error) {
}
}()
- c = parseSSH(lexSSH(r), system, depth)
+ c = parseSSH(lexSSH(b), system, depth)
return c, err
}
@@ -367,7 +376,7 @@ type Host struct {
// EOLComment is the comment (if any) terminating the Host line.
EOLComment string
hasEquals bool
- leadingSpace uint16 // TODO: handle spaces vs tabs here.
+ leadingSpace int // TODO: handle spaces vs tabs here.
// The file starts with an implicit "Host *" declaration.
implicit bool
}
@@ -379,7 +388,7 @@ func (h *Host) Matches(alias string) bool {
found := false
for i := range h.Patterns {
if h.Patterns[i].regex.MatchString(alias) {
- if h.Patterns[i].not == true {
+ if h.Patterns[i].not {
// Negated match. "A pattern entry may be negated by prefixing
// it with an exclamation mark (`!'). If a negated entry is
// matched, then the Host entry is ignored, regardless of
@@ -398,6 +407,7 @@ func (h *Host) Matches(alias string) bool {
// present in the whitespace in the printed file.
func (h *Host) String() string {
var buf bytes.Buffer
+ //lint:ignore S1002 I prefer to write it this way
if h.implicit == false {
buf.WriteString(strings.Repeat(" ", int(h.leadingSpace)))
buf.WriteString("Host")
@@ -438,7 +448,7 @@ type KV struct {
Value string
Comment string
hasEquals bool
- leadingSpace uint16 // Space before the key. TODO handle spaces vs tabs.
+ leadingSpace int // Space before the key. TODO handle spaces vs tabs.
position Position
}
@@ -467,7 +477,7 @@ func (k *KV) String() string {
// Empty is a line in the config file that contains only whitespace or comments.
type Empty struct {
Comment string
- leadingSpace uint16 // TODO handle spaces vs tabs.
+ leadingSpace int // TODO handle spaces vs tabs.
position Position
}
@@ -494,7 +504,6 @@ type Include struct {
// Comment is the contents of any comment at the end of the Include
// statement.
Comment string
- parsed bool
// an include directive can include several different files, and wildcards
directives []string
@@ -504,7 +513,7 @@ type Include struct {
matches []string
// actual filenames are listed here
files map[string]*Config
- leadingSpace uint16
+ leadingSpace int
position Position
depth uint8
hasEquals bool
@@ -523,6 +532,7 @@ func removeDups(arr []string) []string {
result := make([]string, 0)
for v := range arr {
+ //lint:ignore S1002 I prefer it this way
if encountered[arr[v]] == false {
encountered[arr[v]] = true
result = append(result, arr[v])
@@ -544,7 +554,7 @@ func NewInclude(directives []string, hasEquals bool, pos Position, comment strin
directives: directives,
files: make(map[string]*Config),
position: pos,
- leadingSpace: uint16(pos.Col) - 1,
+ leadingSpace: pos.Col - 1,
depth: depth,
hasEquals: hasEquals,
}
diff --git a/vendor/github.com/kevinburke/ssh_config/lexer.go b/vendor/github.com/kevinburke/ssh_config/lexer.go
index b0c6a8650c..11680b4c74 100644
--- a/vendor/github.com/kevinburke/ssh_config/lexer.go
+++ b/vendor/github.com/kevinburke/ssh_config/lexer.go
@@ -1,22 +1,22 @@
package ssh_config
import (
- "io"
-
- buffruneio "github.com/pelletier/go-buffruneio"
+ "bytes"
)
// Define state functions
type sshLexStateFn func() sshLexStateFn
type sshLexer struct {
- input *buffruneio.Reader // Textual source
- buffer []rune // Runes composing the current token
+ inputIdx int
+ input []rune // Textual source
+
+ buffer []rune // Runes composing the current token
tokens chan token
- line uint32
- col uint16
- endbufferLine uint32
- endbufferCol uint16
+ line int
+ col int
+ endbufferLine int
+ endbufferCol int
}
func (s *sshLexer) lexComment(previousState sshLexStateFn) sshLexStateFn {
@@ -114,16 +114,14 @@ func (s *sshLexer) lexRvalue() sshLexStateFn {
}
func (s *sshLexer) read() rune {
- r, _, err := s.input.ReadRune()
- if err != nil {
- panic(err)
- }
+ r := s.peek()
if r == '\n' {
s.endbufferLine++
s.endbufferCol = 1
} else {
s.endbufferCol++
}
+ s.inputIdx++
return r
}
@@ -197,21 +195,22 @@ func (s *sshLexer) emitWithValue(t tokenType, value string) {
}
func (s *sshLexer) peek() rune {
- r, _, err := s.input.ReadRune()
- if err != nil {
- panic(err)
+ if s.inputIdx >= len(s.input) {
+ return eof
}
- s.input.UnreadRune()
+
+ r := s.input[s.inputIdx]
return r
}
func (s *sshLexer) follow(next string) bool {
+ inputIdx := s.inputIdx
for _, expectedRune := range next {
- r, _, err := s.input.ReadRune()
- defer s.input.UnreadRune()
- if err != nil {
- panic(err)
+ if inputIdx >= len(s.input) {
+ return false
}
+ r := s.input[inputIdx]
+ inputIdx++
if expectedRune != r {
return false
}
@@ -226,10 +225,10 @@ func (s *sshLexer) run() {
close(s.tokens)
}
-func lexSSH(input io.Reader) chan token {
- bufferedInput := buffruneio.NewReader(input)
+func lexSSH(input []byte) chan token {
+ runes := bytes.Runes(input)
l := &sshLexer{
- input: bufferedInput,
+ input: runes,
tokens: make(chan token),
line: 1,
col: 1,
diff --git a/vendor/github.com/kevinburke/ssh_config/parser.go b/vendor/github.com/kevinburke/ssh_config/parser.go
index 02745b4b29..36c42055f5 100644
--- a/vendor/github.com/kevinburke/ssh_config/parser.go
+++ b/vendor/github.com/kevinburke/ssh_config/parser.go
@@ -149,7 +149,7 @@ func (p *sshParser) parseKV() sshParserStateFn {
Value: val.val,
Comment: comment,
hasEquals: hasEquals,
- leadingSpace: uint16(key.Position.Col) - 1,
+ leadingSpace: key.Position.Col - 1,
position: key.Position,
}
lastHost.Nodes = append(lastHost.Nodes, kv)
@@ -169,6 +169,12 @@ func (p *sshParser) parseComment() sshParserStateFn {
}
func parseSSH(flow chan token, system bool, depth uint8) *Config {
+ // Ensure we consume tokens to completion even if parser exits early
+ defer func() {
+ for range flow {
+ }
+ }()
+
result := newConfig()
result.position = Position{1, 1}
parser := &sshParser{
diff --git a/vendor/github.com/kevinburke/ssh_config/position.go b/vendor/github.com/kevinburke/ssh_config/position.go
index 7304bc3b7f..e0b5e3fb33 100644
--- a/vendor/github.com/kevinburke/ssh_config/position.go
+++ b/vendor/github.com/kevinburke/ssh_config/position.go
@@ -8,8 +8,8 @@ import "fmt"
// column number, respectively. Values of zero or less will cause Invalid(),
// to return true.
type Position struct {
- Line uint32 // line within the document
- Col uint16 // column within the line
+ Line int // line within the document
+ Col int // column within the line
}
// String representation of the position.