github.com/songshiyun/revive@v1.1.5-0.20220323112655-f8433a19b3c5/cli/git_diff.go (about) 1 package cli 2 3 import ( 4 "path/filepath" 5 "strings" 6 7 "github.com/go-git/go-git/v5" 8 ) 9 10 func GetChangedFiles(directory string) ([]string, error) { 11 var err error 12 if !filepath.IsAbs(directory) { 13 directory, err = filepath.Abs(directory) 14 if err != nil { 15 return nil, err 16 } 17 } 18 r, err := git.PlainOpen(directory) 19 if err != nil { 20 return nil, err 21 } 22 w, err := r.Worktree() 23 if err != nil { 24 return nil, err 25 } 26 s, err := w.Status() 27 if err != nil { 28 return nil, err 29 } 30 var res []string 31 for k, _ := range s { 32 if !strings.HasSuffix(k, ".go") { 33 continue 34 } 35 res = append(res, filepath.Join(directory, k)) 36 } 37 return res, nil 38 }