github.com/crosseyed/versionbump@v1.1.0/internal/git.go (about)

     1  package internal
     2  
     3  import (
     4  	"gopkg.in/src-d/go-git.v4"
     5  	"gopkg.in/src-d/go-git.v4/plumbing"
     6  	"log"
     7  	"strings"
     8  )
     9  
    10  type Git struct {
    11  	repo *git.Repository
    12  }
    13  
    14  func PlainOpen(path string) Git {
    15  	repo, err := git.PlainOpen(path)
    16  	App.Errors(err, errGitLogStderr_Exit)
    17  	return Git{repo: repo}
    18  }
    19  
    20  func (r *Git) ListTags() []string {
    21  	tl := []string{}
    22  	tagrefs, err := r.repo.Tags()
    23  	App.Errors(err, errGitLogStderr_Exit)
    24  	err = tagrefs.ForEach(func(t *plumbing.Reference) error {
    25  		refname := string(t.Name())
    26  		tag := strings.ReplaceAll(refname, "refs/tags/", "")
    27  
    28  		tl = append(tl, tag)
    29  		return nil
    30  	})
    31  	App.Errors(err, errGitLogStderr_Exit)
    32  	return tl
    33  }
    34  
    35  // Error Handlers
    36  func errGitLogStderr_Exit(err error) {
    37  	log.Printf(`git: %v`, err)
    38  	App.Exit(-1)
    39  }