-
Notifications
You must be signed in to change notification settings - Fork 0
/
LocalGitRemote.go
121 lines (93 loc) · 2.27 KB
/
LocalGitRemote.go
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package asciichgolangpublic
import "github.com/go-git/go-git/v5"
type LocalGitRemote struct {
Name string
RemoteUrl string
}
func MustNewLocalGitRemoteByNativeGoGitRemote(goGitRemote *git.Remote) (l *LocalGitRemote) {
l, err := NewLocalGitRemoteByNativeGoGitRemote(goGitRemote)
if err != nil {
LogGoErrorFatal(err)
}
return l
}
func NewLocalGitRemote() (l *LocalGitRemote) {
return new(LocalGitRemote)
}
func NewLocalGitRemoteByNativeGoGitRemote(goGitRemote *git.Remote) (l *LocalGitRemote, err error) {
if goGitRemote == nil {
return nil, TracedErrorEmptyString("goGitRemote")
}
l = NewLocalGitRemote()
remoteConfig := goGitRemote.Config()
if remoteConfig == nil {
return nil, TracedErrorEmptyString("Config")
}
err = l.SetName(remoteConfig.Name)
if err != nil {
return nil, err
}
if len(remoteConfig.URLs) != 1 {
return nil, TracedErrorf(
"Only implemented for 1 remote URL at the moment but got '%v'",
remoteConfig.URLs,
)
}
err = l.SetRemoteUrl(remoteConfig.URLs[0])
if err != nil {
return nil, err
}
return l, nil
}
func (l *LocalGitRemote) GetName() (name string, err error) {
if l.Name == "" {
return "", TracedErrorf("Name not set")
}
return l.Name, nil
}
func (l *LocalGitRemote) GetRemoteUrl() (remoteUrl string, err error) {
if l.RemoteUrl == "" {
return "", TracedErrorf("RemoteUrl not set")
}
return l.RemoteUrl, nil
}
func (l *LocalGitRemote) MustGetName() (name string) {
name, err := l.GetName()
if err != nil {
LogGoErrorFatal(err)
}
return name
}
func (l *LocalGitRemote) MustGetRemoteUrl() (remoteUrl string) {
remoteUrl, err := l.GetRemoteUrl()
if err != nil {
LogGoErrorFatal(err)
}
return remoteUrl
}
func (l *LocalGitRemote) MustSetName(name string) {
err := l.SetName(name)
if err != nil {
LogGoErrorFatal(err)
}
}
func (l *LocalGitRemote) MustSetRemoteUrl(remoteUrl string) {
err := l.SetRemoteUrl(remoteUrl)
if err != nil {
LogGoErrorFatal(err)
}
}
func (l *LocalGitRemote) SetName(name string) (err error) {
if name == "" {
return TracedErrorf("name is empty string")
}
l.Name = name
return nil
}
func (l *LocalGitRemote) SetRemoteUrl(remoteUrl string) (err error) {
if remoteUrl == "" {
return TracedErrorf("remoteUrl is empty string")
}
l.RemoteUrl = remoteUrl
return nil
}