|
|
|
|
[![Build Status](https://travis-ci.org/mgechev/dots.svg?branch=master)](https://travis-ci.org/mgechev/dots)
|
|
|
|
|
|
|
|
|
|
# Dots
|
|
|
|
|
|
|
|
|
|
Implements the wildcard file matching in Go used by golint, go test etc.
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
import "github.com/mgechev/dots"
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
result, err := dots.Resolve([]string{"./fixtures/..."}, []string{"./fixtures/foo"})
|
|
|
|
|
for _, f := range result {
|
|
|
|
|
fmt.Println(f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If we suppose that we have the following directory structure:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
├── README.md
|
|
|
|
|
├── fixtures
|
|
|
|
|
│ ├── bar
|
|
|
|
|
│ │ ├── bar1.go
|
|
|
|
|
│ │ └── bar2.go
|
|
|
|
|
│ ├── baz
|
|
|
|
|
│ │ ├── baz1.go
|
|
|
|
|
│ │ ├── baz2.go
|
|
|
|
|
│ │ └── baz3.go
|
|
|
|
|
│ └── foo
|
|
|
|
|
│ ├── foo1.go
|
|
|
|
|
│ ├── foo2.go
|
|
|
|
|
│ └── foo3.go
|
|
|
|
|
└── main.go
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The result will be:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
fixtures/bar/bar1.go
|
|
|
|
|
fixtures/bar/bar2.go
|
|
|
|
|
fixtures/baz/baz1.go
|
|
|
|
|
fixtures/baz/baz2.go
|
|
|
|
|
fixtures/baz/baz3.go
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`dots` supports wildcard in both - the first and the last argument of `Resolve`, which means that you can ignore files based on a wildcard:
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
dots.Resolve([]string{"github.com/mgechev/dots"}, []string{"./..."}) // empty list
|
|
|
|
|
dots.Resolve([]string{"./fixtures/bar/..."}, []string{"./fixture/foo/...", "./fixtures/baz/..."}) // bar1.go, bar2.go
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Preserve package structure
|
|
|
|
|
|
|
|
|
|
`dots` allow you to receive a slice of slices where each nested slice represents an individual package:
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
dots.ResolvePackages([]string{"github.com/mgechev/dots/..."}, []string{})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
So we will get the result:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
[
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/bar/bar1.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/bar/bar2.go"
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/baz/baz1.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/baz/baz2.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/baz/baz3.go"
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/foo/foo1.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/foo/foo2.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/dummy/foo/foo3.go"
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/pkg/baz/baz1.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/pkg/baz/baz2.go"
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/pkg/foo/foo1.go",
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/pkg/foo/foo2.go"
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
"$GOROOT/src/github.com/mgechev/dots/fixtures/pkg/foo/bar/bar1.go"
|
|
|
|
|
]
|
|
|
|
|
]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This method is especially useful, when you want to perform type checking over given package from the result.
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
MIT
|