upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501)
editorconfig-core-go made breaking api changes and has recently released v2.1.1. This change consumes the new api and fixes up any breaking references.release
parent
80655026d2
commit
66e99d722a
@ -0,0 +1 @@
|
||||
* text=auto
|
@ -0,0 +1,30 @@
|
||||
---
|
||||
language: go
|
||||
dist: xenial
|
||||
sudo: true
|
||||
|
||||
go:
|
||||
- '1.11.x'
|
||||
- '1.12.x'
|
||||
|
||||
compiler:
|
||||
- gcc
|
||||
|
||||
install:
|
||||
# first we create a directory for the CMake binaries
|
||||
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
||||
- mkdir ${DEPS_DIR} && cd ${DEPS_DIR}
|
||||
# we use wget to fetch the cmake binaries
|
||||
- travis_retry wget --no-check-certificate https://cmake.org/files/v3.14/cmake-3.14.6-Linux-x86_64.tar.gz
|
||||
- echo "82e08e50ba921035efa82b859c74c5fbe27d3e49a4003020e3c77618a4e912cd cmake-3.14.6-Linux-x86_64.tar.gz" > sha256sum.txt
|
||||
- sha256sum -c sha256sum.txt
|
||||
- tar -xvf cmake-3.14.6-Linux-x86_64.tar.gz > /dev/null
|
||||
- mv cmake-3.14.6-Linux-x86_64 cmake-install
|
||||
- PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
|
||||
script:
|
||||
- make test
|
@ -0,0 +1,20 @@
|
||||
# Change log
|
||||
|
||||
## v2.1.1 - 2019-08-18
|
||||
|
||||
- Fix a small path bug
|
||||
([#17](https://github.com/editorconfig/editorconfig-core-go/issues/17),
|
||||
[#18](https://github.com/editorconfig/editorconfig-core-go/pull/18)).
|
||||
|
||||
## v2.1.0 - 2019-08-10
|
||||
|
||||
- This package is now *way* more compliant with the Editorconfig definition
|
||||
thanks to a refactor work made by [@greut](https://github.com/greut)
|
||||
([#15](https://github.com/editorconfig/editorconfig-core-go/pull/15)).
|
||||
|
||||
## v2.0.0 - 2019-07-14
|
||||
|
||||
- This project now uses [Go Modules](https://blog.golang.org/using-go-modules)
|
||||
([#14](https://github.com/editorconfig/editorconfig-core-go/pull/14)).
|
||||
- The import path has been changed from `gopkg.in/editorconfig/editorconfig-core-go.v1`
|
||||
to `github.com/editorconfig/editorconfig-core-go/v2`.
|
@ -0,0 +1,5 @@
|
||||
project(editorconfig-core-go)
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
enable_testing()
|
||||
set(EDITORCONFIG_CMD ${CMAKE_CURRENT_LIST_DIR}/editorconfig)
|
||||
add_subdirectory(core-test)
|
@ -0,0 +1,19 @@
|
||||
PROJECT_ROOT_DIR := $(CURDIR)
|
||||
SRC := $(shell git ls-files *.go */*.go)
|
||||
|
||||
.PHONY: bin test test-go test-core submodule
|
||||
|
||||
test: test-go test-core
|
||||
|
||||
submodule:
|
||||
git submodule update --init
|
||||
|
||||
editorconfig: $(SRC)
|
||||
go build ./cmd/editorconfig
|
||||
|
||||
test-go:
|
||||
go test -v ./...
|
||||
|
||||
test-core: editorconfig
|
||||
cd core-test; cmake ..
|
||||
cd core-test; ctest -E "(comments_after_section|octothorpe|unset_|_pre_0.9.0|max_|root_file_mixed_case)" --output-on-failure .
|
@ -0,0 +1,177 @@
|
||||
package editorconfig
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
// findLeftBrackets matches the opening left bracket {
|
||||
findLeftBrackets = regexp.MustCompile(`(^|[^\\])\{`)
|
||||
// findLeftBrackets matches the closing right bracket {
|
||||
findRightBrackets = regexp.MustCompile(`(^|[^\\])\}`)
|
||||
// findNumericRange matches a range of number, e.g. -2..5
|
||||
findNumericRange = regexp.MustCompile(`^([+-]?\d+)\.\.([+-]?\d+)$`)
|
||||
)
|
||||
|
||||
// FnmatchCase tests whether the name matches the given pattern case included.
|
||||
func FnmatchCase(pattern, name string) (bool, error) {
|
||||
p, err := translate(pattern)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
r, err := regexp.Compile(fmt.Sprintf("^%s$", p))
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return r.MatchString(name), nil
|
||||
}
|
||||
|
||||
func translate(pattern string) (string, error) {
|
||||
index := 0
|
||||
pat := []rune(pattern)
|
||||
length := len(pat)
|
||||
|
||||
result := strings.Builder{}
|
||||
|
||||
braceLevel := 0
|
||||
isEscaped := false
|
||||
inBrackets := false
|
||||
|
||||
matchesBraces := len(findLeftBrackets.FindAllString(pattern, -1)) == len(findRightBrackets.FindAllString(pattern, -1))
|
||||
|
||||
for index < length {
|
||||
r := pat[index]
|
||||
index++
|
||||
|
||||
if r == '*' {
|
||||
p := index
|
||||
if p < length && pat[p] == '*' {
|
||||
result.WriteString(".*")
|
||||
index++
|
||||
} else {
|
||||
result.WriteString("[^/]*")
|
||||
}
|
||||
} else if r == '/' {
|
||||
p := index
|
||||
if p+2 < length && pat[p] == '*' && pat[p+1] == '*' && pat[p+2] == '/' {
|
||||
result.WriteString("(?:/|/.*/)")
|
||||
index += 3
|
||||
} else {
|
||||
result.WriteRune(r)
|
||||
}
|
||||
} else if r == '?' {
|
||||
result.WriteString("[^/]")
|
||||
} else if r == '[' {
|
||||
if inBrackets {
|
||||
result.WriteString("\\[")
|
||||
} else {
|
||||
hasSlash := false
|
||||
res := strings.Builder{}
|
||||
|
||||
p := index
|
||||
for p < length {
|
||||
if pat[p] == ']' && pat[p-1] != '\\' {
|
||||
break
|
||||
}
|
||||
res.WriteRune(pat[p])
|
||||
if pat[p] == '/' && pat[p-1] != '\\' {
|
||||
hasSlash = true
|
||||
break
|
||||
}
|
||||
p++
|
||||
}
|
||||
if hasSlash {
|
||||
result.WriteString("\\[" + res.String())
|
||||
index = p + 1
|
||||
} else {
|
||||
inBrackets = true
|
||||
if index < length && pat[index] == '!' || pat[index] == '^' {
|
||||
index++
|
||||
result.WriteString("[^")
|
||||
} else {
|
||||
result.WriteRune('[')
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if r == ']' {
|
||||
if inBrackets && pat[index-2] == '\\' {
|
||||
result.WriteString("\\]")
|
||||
} else {
|
||||
result.WriteRune(r)
|
||||
inBrackets = false
|
||||
}
|
||||
} else if r == '{' {
|
||||
hasComma := false
|
||||
p := index
|
||||
res := strings.Builder{}
|
||||
|
||||
for p < length {
|
||||
if pat[p] == '}' && pat[p-1] != '\\' {
|
||||
break
|
||||
}
|
||||
res.WriteRune(pat[p])
|
||||
if pat[p] == ',' && pat[p-1] != '\\' {
|
||||
hasComma = true
|
||||
break
|
||||
}
|
||||
p++
|
||||
}
|
||||
|
||||
if !hasComma && p < length {
|
||||
inner := res.String()
|
||||
sub := findNumericRange.FindStringSubmatch(inner)
|
||||
if len(sub) == 3 {
|
||||
from, _ := strconv.Atoi(sub[1])
|
||||
to, _ := strconv.Atoi(sub[2])
|
||||
result.WriteString("(?:")
|
||||
// XXX does not scale well
|
||||
for i := from; i < to; i++ {
|
||||
result.WriteString(strconv.Itoa(i))
|
||||
result.WriteRune('|')
|
||||
}
|
||||
result.WriteString(strconv.Itoa(to))
|
||||
result.WriteRune(')')
|
||||
} else {
|
||||
r, _ := translate(inner)
|
||||
result.WriteString(fmt.Sprintf("\\{%s\\}", r))
|
||||
}
|
||||
index = p + 1
|
||||
} else if matchesBraces {
|
||||
result.WriteString("(?:")
|
||||
braceLevel++
|
||||
} else {
|
||||
result.WriteString("\\{")
|
||||
}
|
||||
} else if r == '}' {
|
||||
if braceLevel > 0 {
|
||||
if isEscaped {
|
||||
result.WriteRune('}')
|
||||
isEscaped = false
|
||||
} else {
|
||||
result.WriteRune(')')
|
||||
braceLevel--
|
||||
}
|
||||
} else {
|
||||
result.WriteString("\\}")
|
||||
}
|
||||
} else if r == ',' {
|
||||
if braceLevel == 0 || isEscaped {
|
||||
result.WriteRune(r)
|
||||
} else {
|
||||
result.WriteRune('|')
|
||||
}
|
||||
} else if r != '\\' || isEscaped {
|
||||
result.WriteString(regexp.QuoteMeta(string(r)))
|
||||
isEscaped = false
|
||||
} else {
|
||||
isEscaped = true
|
||||
}
|
||||
}
|
||||
|
||||
return result.String(), nil
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
module github.com/editorconfig/editorconfig-core-go/v2
|
||||
|
||||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a // indirect
|
||||
github.com/stretchr/testify v1.3.0
|
||||
gopkg.in/ini.v1 v1.42.0
|
||||
)
|
@ -0,0 +1,22 @@
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk=
|
||||
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
@ -1,5 +0,0 @@
|
||||
* text eol=lf
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.png binary
|
||||
*.ico binary
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
language: go
|
||||
sudo: false
|
||||
go:
|
||||
- '1.8'
|
||||
- '1.9'
|
||||
- '1.10'
|
||||
go_import_path: gopkg.in/editorconfig/editorconfig-core-go.v1
|
||||
|
||||
install:
|
||||
- make installdeps
|
||||
|
||||
script:
|
||||
- make test
|
@ -1,25 +0,0 @@
|
||||
PROJECT_ROOT_DIR := $(CURDIR)
|
||||
SRC := editorconfig.go cmd/editorconfig/main.go
|
||||
|
||||
.PHONY: bin test test-go test-core submodule installdeps
|
||||
|
||||
test: test-go test-core
|
||||
|
||||
submodule:
|
||||
git submodule update --init
|
||||
|
||||
installdeps:
|
||||
go get -t ./...
|
||||
|
||||
editorconfig: $(SRC)
|
||||
go build ./cmd/editorconfig
|
||||
|
||||
test-go:
|
||||
go test -v
|
||||
|
||||
test-core: editorconfig
|
||||
cd $(PROJECT_ROOT_DIR)/core-test && \
|
||||
cmake -DEDITORCONFIG_CMD="$(PROJECT_ROOT_DIR)/editorconfig" .
|
||||
# Temporarily disable core-test
|
||||
# cd $(PROJECT_ROOT_DIR)/core-test && \
|
||||
# ctest --output-on-failure .
|
Loading…
Reference in New Issue