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 }