From 19accc5fde5ac50ab8028f468a008f4d6846ce34 Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova <11545763+snezhana-dorogova@users.noreply.github.com> Date: Thu, 26 Dec 2019 00:31:04 +0300 Subject: [PATCH 1/7] set GOPATH --- reference/resolver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/resolver.go b/reference/resolver.go index 5bddf2f..0a6cb1a 100644 --- a/reference/resolver.go +++ b/reference/resolver.go @@ -514,7 +514,7 @@ func (r *resolver) ParseFile(pkg, file string) error { func NewResolver(verbose bool) Resolver { return &resolver{ verbose: verbose, - gopath: filepath.Join(os.Getenv("GOPATH"), "src"), + gopath: filepath.Join(os.Getenv("GOPATH"), "pkg\\mod"), builtinTypes: []string{"bool", "string", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "byte", "rune", "float32", "float64", "complex64", "complex128", "object"}, packages: make(map[string]map[string]resolvedFile, 0), types: make(map[string][]string, 0), From 8d4c4e7801b9ac38a05fef997bbee601fb507584 Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova Date: Thu, 26 Dec 2019 00:35:22 +0300 Subject: [PATCH 2/7] update imports --- app/app.go | 10 +++++----- app/app_test.go | 4 ++-- app/extract.go | 2 +- app/extract_test.go | 2 +- app/subrouter.go | 2 +- app/subrouter_test.go | 2 +- app/tokenize.go | 2 +- app/tokenize_test.go | 4 ++-- cmd/root.go | 2 +- cmd/version.go | 2 +- example/handler/person/person.go | 6 +++--- example/main.go | 2 +- main.go | 4 ++-- output/generator.go | 2 +- output/openapi/generator.go | 6 +++--- output/openapi/generator_test.go | 2 +- reference/resolver.go | 2 +- reference/resolver_test.go | 2 +- token/parser.go | 2 +- token/parser_test.go | 2 +- 20 files changed, 31 insertions(+), 31 deletions(-) diff --git a/app/app.go b/app/app.go index 2649126..28d797e 100644 --- a/app/app.go +++ b/app/app.go @@ -5,11 +5,11 @@ import ( "path/filepath" log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/extract" - "github.com/spaceavocado/apidoc/output" - "github.com/spaceavocado/apidoc/output/openapi" - "github.com/spaceavocado/apidoc/reference" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/output" + "github.com/snezhana-dorogova/apidoc/output/openapi" + "github.com/snezhana-dorogova/apidoc/reference" + "github.com/snezhana-dorogova/apidoc/token" ) const ( diff --git a/app/app_test.go b/app/app_test.go index d87b077..38de031 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -10,8 +10,8 @@ import ( log "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spaceavocado/apidoc/extract" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/token" ) type errorResolver struct{} diff --git a/app/extract.go b/app/extract.go index e4d1b71..dcfdcd4 100644 --- a/app/extract.go +++ b/app/extract.go @@ -6,7 +6,7 @@ import ( "path/filepath" "strings" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) // ExtractResult of the documentation extraction diff --git a/app/extract_test.go b/app/extract_test.go index a41e7ee..27597dc 100644 --- a/app/extract_test.go +++ b/app/extract_test.go @@ -6,7 +6,7 @@ import ( "os" "testing" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) type mockExtractor struct { diff --git a/app/subrouter.go b/app/subrouter.go index 6fb06da..4db701b 100644 --- a/app/subrouter.go +++ b/app/subrouter.go @@ -3,7 +3,7 @@ package app import ( "errors" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/token" ) type subrouter struct { diff --git a/app/subrouter_test.go b/app/subrouter_test.go index 6a90459..4f833d8 100644 --- a/app/subrouter_test.go +++ b/app/subrouter_test.go @@ -3,7 +3,7 @@ package app import ( "testing" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/token" ) func TestResolveSubrouters(t *testing.T) { diff --git a/app/tokenize.go b/app/tokenize.go index 55a4247..ed2b9fd 100644 --- a/app/tokenize.go +++ b/app/tokenize.go @@ -4,7 +4,7 @@ import ( "fmt" log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/token" ) // RequiredMainTokens to be present in the main block diff --git a/app/tokenize_test.go b/app/tokenize_test.go index 43a1d15..34516fa 100644 --- a/app/tokenize_test.go +++ b/app/tokenize_test.go @@ -7,8 +7,8 @@ import ( log "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spaceavocado/apidoc/extract" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/token" ) type mockParser struct { diff --git a/cmd/root.go b/cmd/root.go index 1d8b666..f82df19 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -4,7 +4,7 @@ package cmd import ( log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/app" + "github.com/snezhana-dorogova/apidoc/app" "github.com/spf13/cobra" ) diff --git a/cmd/version.go b/cmd/version.go index 85616a2..f75f705 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -3,7 +3,7 @@ package cmd import ( "fmt" - "github.com/spaceavocado/apidoc/app" + "github.com/snezhana-dorogova/apidoc/app" "github.com/spf13/cobra" ) diff --git a/example/handler/person/person.go b/example/handler/person/person.go index 8295a04..02c62b6 100644 --- a/example/handler/person/person.go +++ b/example/handler/person/person.go @@ -5,10 +5,10 @@ import ( "net/http" "github.com/gorilla/mux" - "github.com/spaceavocado/apidoc/example/request" - "github.com/spaceavocado/apidoc/example/response" + "github.com/snezhana-dorogova/apidoc/example/request" + "github.com/snezhana-dorogova/apidoc/example/response" // Common respose, structs referenced in the API documentation - _ "github.com/spaceavocado/apidoc/example/common" + _ "github.com/snezhana-dorogova/apidoc/example/common" ) // Person response model diff --git a/example/main.go b/example/main.go index 3b48edd..fb2991e 100644 --- a/example/main.go +++ b/example/main.go @@ -6,7 +6,7 @@ import ( "time" "github.com/gorilla/mux" - "github.com/spaceavocado/apidoc/example/handler/person" + "github.com/snezhana-dorogova/apidoc/example/handler/person" ) // @title Example API diff --git a/main.go b/main.go index 643453b..a34ca4f 100644 --- a/main.go +++ b/main.go @@ -9,8 +9,8 @@ package main import ( log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/cmd" - "github.com/spaceavocado/apidoc/misc" + "github.com/snezhana-dorogova/apidoc/cmd" + "github.com/snezhana-dorogova/apidoc/misc" ) func main() { diff --git a/output/generator.go b/output/generator.go index 5a12a59..77fb743 100644 --- a/output/generator.go +++ b/output/generator.go @@ -2,7 +2,7 @@ // from the tokenized outcome. package output -import "github.com/spaceavocado/apidoc/token" +import "github.com/snezhana-dorogova/apidoc/token" // Generator of the documentation type Generator interface { diff --git a/output/openapi/generator.go b/output/openapi/generator.go index 39ef3c8..3d2ebfc 100644 --- a/output/openapi/generator.go +++ b/output/openapi/generator.go @@ -10,9 +10,9 @@ import ( "strings" log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/misc" - "github.com/spaceavocado/apidoc/output" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/misc" + "github.com/snezhana-dorogova/apidoc/output" + "github.com/snezhana-dorogova/apidoc/token" ) type generator struct { diff --git a/output/openapi/generator_test.go b/output/openapi/generator_test.go index 6784805..f922bb2 100644 --- a/output/openapi/generator_test.go +++ b/output/openapi/generator_test.go @@ -9,7 +9,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spaceavocado/apidoc/token" + "github.com/snezhana-dorogova/apidoc/token" ) func TestGenerate(t *testing.T) { diff --git a/reference/resolver.go b/reference/resolver.go index 0a6cb1a..85fe3fb 100644 --- a/reference/resolver.go +++ b/reference/resolver.go @@ -12,7 +12,7 @@ import ( "strings" log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) // Resolver of references diff --git a/reference/resolver_test.go b/reference/resolver_test.go index d775641..12cad51 100644 --- a/reference/resolver_test.go +++ b/reference/resolver_test.go @@ -10,7 +10,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) func TestResolve(t *testing.T) { diff --git a/token/parser.go b/token/parser.go index aa0df1e..6c9355a 100644 --- a/token/parser.go +++ b/token/parser.go @@ -8,7 +8,7 @@ import ( "strings" log "github.com/sirupsen/logrus" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) // ErrParsing is soft error not causing the failure diff --git a/token/parser_test.go b/token/parser_test.go index f547330..2b5dcba 100644 --- a/token/parser_test.go +++ b/token/parser_test.go @@ -8,7 +8,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spaceavocado/apidoc/extract" + "github.com/snezhana-dorogova/apidoc/extract" ) func TestParse(t *testing.T) { From 051d4dc810a41cd831e4b592d9d0d0255954b1bb Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova Date: Thu, 26 Dec 2019 02:29:14 +0300 Subject: [PATCH 3/7] add vendor directory location --- app/conf.go | 2 ++ cmd/root.go | 9 +++++++++ reference/resolver.go | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/conf.go b/app/conf.go index 4924709..ed49729 100644 --- a/app/conf.go +++ b/app/conf.go @@ -2,6 +2,8 @@ package app // Configuration of the app type Configuration struct { + // Project directory + DirPath string // Main documentation file MainFile string // Endpoints root folder diff --git a/cmd/root.go b/cmd/root.go index f82df19..c702953 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,6 +6,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/snezhana-dorogova/apidoc/app" "github.com/spf13/cobra" + "os" ) // RootCmd is the main command running the apidoc tool @@ -15,6 +16,7 @@ func RootCmd() *cobra.Command { Long: "API Documentation Generator", Run: func(c *cobra.Command, args []string) { log.Infof("%s (%s)", c.Long, app.Version) + dirPath, err := c.PersistentFlags().GetString("dir") mainFile, err := c.PersistentFlags().GetString("main") endsRoot, err := c.PersistentFlags().GetString("endpoints") output, err := c.PersistentFlags().GetString("output") @@ -25,6 +27,7 @@ func RootCmd() *cobra.Command { } app := app.New(app.Configuration{ + DirPath: dirPath, MainFile: mainFile, EndsRoot: endsRoot, Output: output, @@ -34,7 +37,13 @@ func RootCmd() *cobra.Command { }, } + dir, err := os.Getwd() + if err != nil { + log.Fatal(err) + } + // Flags + rootCmd.PersistentFlags().StringP("dir", "d", dir, "") rootCmd.PersistentFlags().StringP("main", "m", "main.go", "Main API documentation file") rootCmd.PersistentFlags().StringP("endpoints", "e", "./", "Root endpoints folder") rootCmd.PersistentFlags().StringP("output", "o", "docs/api", "Documentation output folder") diff --git a/reference/resolver.go b/reference/resolver.go index 85fe3fb..6d55b3a 100644 --- a/reference/resolver.go +++ b/reference/resolver.go @@ -511,10 +511,10 @@ func (r *resolver) ParseFile(pkg, file string) error { } // NewResolver instance -func NewResolver(verbose bool) Resolver { +func (a *App) NewResolver(verbose bool) Resolver { return &resolver{ verbose: verbose, - gopath: filepath.Join(os.Getenv("GOPATH"), "pkg\\mod"), + gopath: filepath.Join(a.conf.DirPath, "vendor"), builtinTypes: []string{"bool", "string", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "byte", "rune", "float32", "float64", "complex64", "complex128", "object"}, packages: make(map[string]map[string]resolvedFile, 0), types: make(map[string][]string, 0), From f3efeb6426aef50f7d6bfe6691b8d7fc04c39b75 Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova Date: Thu, 26 Dec 2019 02:50:45 +0300 Subject: [PATCH 4/7] add vendor directory location --- app/app.go | 2 +- reference/resolver.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/app.go b/app/app.go index 28d797e..e56048e 100644 --- a/app/app.go +++ b/app/app.go @@ -76,7 +76,7 @@ func New(c Configuration) App { conf: &c, extractor: extract.NewExtractor(c.Verbose), tokenParser: token.NewParser(c.Verbose), - refResolver: reference.NewResolver(c.Verbose), + refResolver: reference.NewResolver(c.Verbose, c.DirPath), generator: openapi.NewGenerator(c.Verbose), } } diff --git a/reference/resolver.go b/reference/resolver.go index 6d55b3a..19d45ef 100644 --- a/reference/resolver.go +++ b/reference/resolver.go @@ -511,10 +511,10 @@ func (r *resolver) ParseFile(pkg, file string) error { } // NewResolver instance -func (a *App) NewResolver(verbose bool) Resolver { +func NewResolver(verbose bool, dir string) Resolver { return &resolver{ verbose: verbose, - gopath: filepath.Join(a.conf.DirPath, "vendor"), + gopath: filepath.Join(dir, "vendor"), builtinTypes: []string{"bool", "string", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "byte", "rune", "float32", "float64", "complex64", "complex128", "object"}, packages: make(map[string]map[string]resolvedFile, 0), types: make(map[string][]string, 0), From ac1606074aa7ac076a3563cc3aeda605d4777658 Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova Date: Thu, 26 Dec 2019 02:55:05 +0300 Subject: [PATCH 5/7] add vendor directory location --- cmd/root.go | 8 +------- readme.md | 1 + 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index c702953..c92e0cc 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,7 +6,6 @@ import ( log "github.com/sirupsen/logrus" "github.com/snezhana-dorogova/apidoc/app" "github.com/spf13/cobra" - "os" ) // RootCmd is the main command running the apidoc tool @@ -37,13 +36,8 @@ func RootCmd() *cobra.Command { }, } - dir, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - // Flags - rootCmd.PersistentFlags().StringP("dir", "d", dir, "") + rootCmd.PersistentFlags().StringP("dir", "d", "./", "") rootCmd.PersistentFlags().StringP("main", "m", "main.go", "Main API documentation file") rootCmd.PersistentFlags().StringP("endpoints", "e", "./", "Root endpoints folder") rootCmd.PersistentFlags().StringP("output", "o", "docs/api", "Documentation output folder") diff --git a/readme.md b/readme.md index 407860f..9db2c47 100644 --- a/readme.md +++ b/readme.md @@ -542,6 +542,7 @@ Available Commands: version Show the APIDoc version Flags: + -d, --dir string Vendor directory path (default "./") -e, --endpoints string Root endpoints folder (default "./") -h, --help Help for this command -m, --main string Main API documentation file (default "main.go") From dc476162a3ff6347e0562fccb52de59246f0720e Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova Date: Wed, 1 Jan 2020 22:27:13 +0300 Subject: [PATCH 6/7] remove duplicated lines --- reference/resolver.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/reference/resolver.go b/reference/resolver.go index 19d45ef..e7389f1 100644 --- a/reference/resolver.go +++ b/reference/resolver.go @@ -154,11 +154,23 @@ func (r *resolver) Resolve(endpoints []extract.Block) error { } // Updated the lines with the resolved enriched lines - endpoints[i].Lines = resolved + endpoints[i].Lines = unique(resolved) } return nil } +func unique(inputSlice []string) []string { + keys := make(map[string]bool) + res := []string{} + for _, entry := range inputSlice { + if _, value := keys[entry]; !value { + keys[entry] = true + res = append(res, entry) + } + } + return res +} + // HasExpectedPrefix returns the detected // expected prefix it the form of its output mapping func (r *resolver) HasExpectedPrefix(line string) mappingType { From 373d6aeca158106faf90f5610ff9177f1f467d29 Mon Sep 17 00:00:00 2001 From: Snezhana Dorogova <11545763+snezhana-dorogova@users.noreply.github.com> Date: Fri, 10 Jan 2020 14:49:14 +0300 Subject: [PATCH 7/7] update readme --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 9db2c47..71a3f03 100644 --- a/readme.md +++ b/readme.md @@ -481,7 +481,7 @@ An endpoint, with the same URL could be declared separately with different metho // @param id path {int} true User ID // @produce text // @success 200 {string} OK -// @router /user/{id} [post] +// @router /user/{id} [get] // ...