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.tokarchuk/v1.17
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