summaryrefslogtreecommitdiff
path: root/internal/git/types.go
blob: beecfa45d52bb2db44baca7ba90eb6b8b19304d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package git

import (
	"time"
)

type Ref struct {
	ref     string
	dirName string
}

func NewRef(ref string) Ref {
	return Ref{
		ref:     ref,
		dirName: RefToFileName(ref),
	}
}

func (r Ref) IsEmpty() bool {
	return r.ref == ""
}

func (r Ref) String() string {
	return r.ref
}

func (r Ref) DirName() string {
	return r.dirName
}

type Blob struct {
	Ref      Ref
	Mode     string
	Path     string
	FileName string
	Size     int64
}

type Commit struct {
	Hash           string
	ShortHash      string
	Subject        string
	Body           string
	Author         string
	Email          string
	Date           time.Time
	CommitterName  string
	CommitterEmail string
	CommitterDate  time.Time
	Parents        []string
	Branch         Ref
	RefNames       []RefName
	Href           string
}

type RefKind string

const (
	RefKindHEAD       RefKind = "HEAD"
	RefKindRemoteHEAD RefKind = "RemoteHEAD"
	RefKindBranch     RefKind = "Branch"
	RefKindRemote     RefKind = "Remote"
	RefKindTag        RefKind = "Tag"
)

type RefName struct {
	Kind   RefKind
	Name   string // Name is the primary name of the ref as shown by `git log %D` token (left side for pointers)
	Target string // Target is set for symbolic refs like "HEAD -> main" or "origin/HEAD -> origin/main"
}

type Tag struct {
	Name       string
	Date       time.Time
	CommitHash string
}