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  }