123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package main
- import (
- "flag"
- "os"
- "path/filepath"
- "strings"
- "go-common/app/tool/bgr/log"
- )
- var (
- _flagType string
- _flagScript string
- _flagDebug bool
- _flagHit string
- _log *log.Logger
- )
- func init() {
- flag.StringVar(&_flagType, "type", "file", "args type, file or dir")
- flag.StringVar(&_flagScript, "script", defaultDir(), "input script dir")
- flag.BoolVar(&_flagDebug, "debug", false, "set true, if need print debug info")
- flag.StringVar(&_flagHit, "hit", "", "filter hit key")
- flag.Parse()
- _log = log.New(os.Stdout, _flagDebug)
- }
- func defaultDir() string {
- dir, err := os.Getwd()
- if err != nil {
- panic(err)
- }
- return dir
- }
- func main() {
- targets := flag.Args()
- switch _flagType {
- case "file":
- targets = filterFiles(targets)
- targets = combineDirs(targets)
- }
- _log.Debugf("check targets: %+v", targets)
- walkScript(_flagScript)
- for _, dir := range targets {
- if strings.HasSuffix(dir, "...") {
- walkDir(strings.TrimRight(dir, "..."))
- } else {
- if err := AstInspect(dir); err != nil {
- _log.Fatalf("%+v", err)
- }
- }
- }
- for _, desc := range _warns {
- _log.Warn(desc)
- }
- for _, desc := range _errors {
- _log.Error(desc)
- }
- if len(_errors) > 0 {
- os.Exit(1)
- }
- }
- func walkDir(dir string) {
- filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
- if info.IsDir() {
- if err := AstInspect(path); err != nil {
- _log.Fatalf("%+v", err)
- }
- }
- return nil
- })
- }
- func combineDirs(files []string) (fs []string) {
- fmap := make(map[string]struct{})
- for _, f := range files {
- index := strings.LastIndex(f, "/")
- if index > 0 {
- fmap[f[:index]] = struct{}{}
- }
- }
- for k := range fmap {
- fs = append(fs, k)
- }
- return
- }
- func filterFiles(files []string) (fs []string) {
- for _, f := range files {
- if strings.Contains(f, _flagHit) {
- fs = append(fs, f)
- }
- }
- return
- }
|