github.com/nemith/go-gitlog@v0.0.2-0.20180205151741-6c79beb2287b/revision_range.go (about)

     1  package gitlog
     2  
     3  import (
     4  	"fmt"
     5  	"strconv"
     6  	"time"
     7  )
     8  
     9  // RevArgs is used to specify the range of git-log
    10  type RevArgs interface {
    11  	Args() []string
    12  }
    13  
    14  // Rev is useful for specifying refname
    15  type Rev struct {
    16  	Ref string
    17  }
    18  
    19  // Args ...
    20  func (rev *Rev) Args() []string {
    21  	return []string{rev.Ref}
    22  }
    23  
    24  // RevRange is useful for specifying refname range
    25  // alias for `<ref>..<ref>`
    26  type RevRange struct {
    27  	New string
    28  	Old string
    29  }
    30  
    31  // Args ...
    32  func (rev *RevRange) Args() []string {
    33  	return []string{fmt.Sprintf("%s..%s", rev.Old, rev.New)}
    34  }
    35  
    36  // RevAll alias for `--all`
    37  type RevAll struct{}
    38  
    39  // Args ...
    40  func (*RevAll) Args() []string {
    41  	return []string{"--all"}
    42  }
    43  
    44  // RevNumber alias for `-n <number>`
    45  type RevNumber struct {
    46  	Limit int
    47  }
    48  
    49  // Args ...
    50  func (rev *RevNumber) Args() []string {
    51  	return []string{"-n", strconv.Itoa(rev.Limit)}
    52  }
    53  
    54  // RevTime alias for `--since <date> --until <date>`
    55  type RevTime struct {
    56  	Since time.Time
    57  	Until time.Time
    58  }
    59  
    60  // Args ...
    61  func (rev *RevTime) Args() []string {
    62  	since := rev.Since.Format("2006-01-02 15:04:05")
    63  	until := rev.Until.Format("2006-01-02 15:04:05")
    64  
    65  	if !rev.Since.IsZero() && !rev.Until.IsZero() {
    66  		return []string{
    67  			"--since", since,
    68  			"--until", until,
    69  		}
    70  	} else if !rev.Since.IsZero() {
    71  		return []string{"--since", since}
    72  	} else if !rev.Until.IsZero() {
    73  		return []string{"--until", until}
    74  	}
    75  
    76  	return []string{}
    77  }