Skip to content

Commit

Permalink
Compatible with go:generate
Browse files Browse the repository at this point in the history
  • Loading branch information
wweir committed Dec 21, 2018
1 parent 185b87d commit 531c3d1
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 25 deletions.
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,18 @@ Usage of interfacer:
```

*Example*

- generate by manually
```bash
~ $ interfacer -for os.File -as mock.File
```
- generate by go generate
```go
//go:generate interfacer -for os.File -as mock.File -o file_iface.go
```
```bash
~ $ interfacer -for \"os\".File -as mock.File
~ $ go generate ./...
```
- output
```go
// Created by interfacer; DO NOT EDIT

Expand Down
2 changes: 1 addition & 1 deletion build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func TestBuild(t *testing.T) {
"interfacer": {
run: func(base string) error {
args := []string{
"-for", `"os".File`,
"-for", `os.File`,
"-as", "mock.File",
"-o", filepath.Join(base, "package.go"),
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/interfacer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func main() {
die(err)
}
v := &vars{
Type: *query,
Type: fmt.Sprintf(`"%s"`, *query),
Deps: i.Deps(),
Interface: i,
}
Expand Down
2 changes: 1 addition & 1 deletion example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func (ExampleBaz) D(*map[interface{}]struct{}, interface{}) (chan struct{}, []in
func (*ExampleBaz) E(*[]map[*flag.FlagSet]struct{}, [3]string) {}

func ExampleNew() {
i, err := interfaces.New(`"github.com/rjeczalik/interfaces".ExampleBaz`)
i, err := interfaces.New(`github.com/rjeczalik/interfaces.ExampleBaz`)
if err != nil {
fmt.Println(err)
return
Expand Down
4 changes: 2 additions & 2 deletions interfaces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (

func TestParseQuery(t *testing.T) {
cases := map[string]*interfaces.Query{
`"os".File`: {
`os.File`: {
Package: "os",
TypeName: "File",
},
`"github.com/rjeczalik/interfaces".Query`: {
`github.com/rjeczalik/interfaces.Query`: {
Package: "github.com/rjeczalik/interfaces",
TypeName: "Query",
},
Expand Down
26 changes: 8 additions & 18 deletions options.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,16 @@ type Query struct {

// ParseQuery gives new Query for the given query text.
func ParseQuery(query string) (*Query, error) {
if query == "" {
return nil, errors.New("query string is empty")
idx := strings.LastIndex(query, ".")
if idx == -1 || query[:idx] == "" || query[idx+1:] == "" {
return nil, errors.New("generating source should be path/to/package.type")
}
var q Query
if query[0] != '"' {
return nil, errSyntax
}
query = query[1:]
i := strings.LastIndex(query, `"`)
if i == -1 || i+1 == len(query) || query[i+1] != '.' {
return nil, errSyntax
}
q.Package = query[:i]
q.TypeName = query[i+2:]
if err := q.valid(); err != nil {
return nil, err
}
return &q, nil
}

return &Query{
Package: query[:idx],
TypeName: query[idx+1:],
}, nil
}
func (q *Query) valid() error {
if q == nil {
return errors.New("query is nil")
Expand Down

0 comments on commit 531c3d1

Please # to comment.