-
Notifications
You must be signed in to change notification settings - Fork 124
/
cli_update.go
74 lines (61 loc) · 2.2 KB
/
cli_update.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
package model
import (
"github.com/evergreen-ci/evergreen"
"github.com/evergreen-ci/utility"
)
type APICLIUpdate struct {
ClientConfig APIClientConfig `json:"client_config"`
IgnoreUpdate bool `json:"ignore_update"`
}
func (a *APICLIUpdate) BuildFromService(c evergreen.ClientConfig) {
a.ClientConfig.BuildFromService(c)
}
type APIClientConfig struct {
ClientBinaries []APIClientBinary `json:"client_binaries,omitempty"`
S3ClientBinaries []APIClientBinary `json:"s3_client_binaries,omitempty"`
LatestRevision *string `json:"latest_revision"`
}
func (a *APIClientConfig) BuildFromService(c evergreen.ClientConfig) {
a.ClientBinaries = make([]APIClientBinary, len(c.ClientBinaries))
for i := range a.ClientBinaries {
a.ClientBinaries[i].BuildFromService(c.ClientBinaries[i])
}
a.S3ClientBinaries = make([]APIClientBinary, len(c.S3ClientBinaries))
for i := range a.S3ClientBinaries {
a.S3ClientBinaries[i].BuildFromService(c.S3ClientBinaries[i])
}
a.LatestRevision = utility.ToStringPtr(c.LatestRevision)
}
func (a *APIClientConfig) ToService() evergreen.ClientConfig {
c := evergreen.ClientConfig{}
c.LatestRevision = utility.FromStringPtr(a.LatestRevision)
c.ClientBinaries = make([]evergreen.ClientBinary, len(a.ClientBinaries))
for i := range c.ClientBinaries {
c.ClientBinaries[i] = a.ClientBinaries[i].ToService()
}
c.S3ClientBinaries = make([]evergreen.ClientBinary, len(a.S3ClientBinaries))
for i := range a.S3ClientBinaries {
c.S3ClientBinaries[i] = a.S3ClientBinaries[i].ToService()
}
return c
}
type APIClientBinary struct {
Arch *string `json:"arch"`
OS *string `json:"os"`
URL *string `json:"url"`
DisplayName *string `json:"display_name"`
}
func (a *APIClientBinary) BuildFromService(b evergreen.ClientBinary) {
a.Arch = utility.ToStringPtr(b.Arch)
a.OS = utility.ToStringPtr(b.OS)
a.URL = utility.ToStringPtr(b.URL)
a.DisplayName = utility.ToStringPtr(b.DisplayName)
}
func (a *APIClientBinary) ToService() evergreen.ClientBinary {
b := evergreen.ClientBinary{}
b.Arch = utility.FromStringPtr(a.Arch)
b.OS = utility.FromStringPtr(a.OS)
b.URL = utility.FromStringPtr(a.URL)
b.DisplayName = utility.FromStringPtr(a.DisplayName)
return b
}