From 272271f588d265892421d00480c5af7e3d804b82 Mon Sep 17 00:00:00 2001 From: ysqi Date: Wed, 27 Apr 2016 23:57:22 +0800 Subject: [PATCH] Change comment router file info --- parser.go | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/parser.go b/parser.go index 46d02320..b19b2705 100644 --- a/parser.go +++ b/parser.go @@ -24,6 +24,7 @@ import ( "io/ioutil" "os" "path" + "path/filepath" "sort" "strings" @@ -56,7 +57,7 @@ func init() { func parserPkg(pkgRealpath, pkgpath string) error { rep := strings.NewReplacer("/", "_", ".", "_") - commentFilename = coomentPrefix + rep.Replace(pkgpath) + ".go" + commentFilename = coomentPrefix + rep.Replace(strings.Replace(pkgRealpath, AppPath, "", -1)) + ".go" if !compareFile(pkgRealpath) { Info(pkgRealpath + " no changed") return nil @@ -86,7 +87,7 @@ func parserPkg(pkgRealpath, pkgpath string) error { } } } - genRouterCode() + genRouterCode(pkgRealpath) savetoFile(pkgRealpath) return nil } @@ -129,8 +130,8 @@ func parserComments(comments *ast.CommentGroup, funcName, controllerName, pkgpat return nil } -func genRouterCode() { - os.Mkdir(path.Join(AppPath, "routers"), 0755) +func genRouterCode(pkgRealpath string) { + os.Mkdir(getRouterDir(pkgRealpath), 0755) Info("generate router from comments") var ( globalinfo string @@ -172,7 +173,7 @@ func genRouterCode() { } } if globalinfo != "" { - f, err := os.Create(path.Join(AppPath, "routers", commentFilename)) + f, err := os.Create(path.Join(getRouterDir(pkgRealpath), commentFilename)) if err != nil { panic(err) } @@ -182,7 +183,7 @@ func genRouterCode() { } func compareFile(pkgRealpath string) bool { - if !utils.FileExists(path.Join(AppPath, "routers", commentFilename)) { + if !utils.FileExists(path.Join(getRouterDir(pkgRealpath), commentFilename)) { return true } if utils.FileExists(lastupdateFilename) { @@ -229,3 +230,18 @@ func getpathTime(pkgRealpath string) (lastupdate int64, err error) { } return lastupdate, nil } + +func getRouterDir(pkgRealpath string) string { + dir := filepath.Dir(pkgRealpath) + for { + d := path.Join(dir, "routers") + if dir == AppPath { + return d + } + if utils.FileExists(d) { + return d + } + // Parent dir. + dir = filepath.Dir(dir) + } +}