Skip to content
This repository was archived by the owner on Jul 28, 2020. It is now read-only.

Commit 9f8d1e4

Browse files
committed
Set cfdev version at build time [#157016335]
1 parent ec98f5c commit 9f8d1e4

File tree

8 files changed

+107
-6
lines changed

8 files changed

+107
-6
lines changed

src/code.cloudfoundry.org/cfdev/cfanalytics/cfanalytics.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ type Analytics struct {
2929
version string
3030
}
3131

32-
func New(toggle Toggle, client analytics.Client) *Analytics {
32+
func New(toggle Toggle, client analytics.Client, version string) *Analytics {
3333
uuid, err := machineid.ProtectedID("cfdev")
3434
if err != nil {
3535
uuid = "UNKNOWN_ID"
@@ -38,7 +38,7 @@ func New(toggle Toggle, client analytics.Client) *Analytics {
3838
client: client,
3939
toggle: toggle,
4040
userId: uuid,
41-
version: "0.0.2",
41+
version: version,
4242
}
4343
}
4444

src/code.cloudfoundry.org/cfdev/cfanalytics/cfanalytics_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _ = Describe("Analytics", func() {
5757
BeforeEach(func() {
5858
mockToggle = &MockToggle{}
5959
mockClient = &MockClient{}
60-
subject = cfanalytics.New(mockToggle, mockClient)
60+
subject = cfanalytics.New(mockToggle, mockClient, "4.5.6-unit-test")
6161
})
6262

6363
Describe("PromptOptIn", func() {
@@ -135,7 +135,7 @@ var _ = Describe("Analytics", func() {
135135
"Timestamp": BeTemporally(">=", time.Now().Add(-1*time.Minute)),
136136
"Properties": BeEquivalentTo(map[string]interface{}{
137137
"os": runtime.GOOS,
138-
"version": "0.0.2",
138+
"version": "4.5.6-unit-test",
139139
"mykey": "myval",
140140
}),
141141
}))

src/code.cloudfoundry.org/cfdev/config/config.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"code.cloudfoundry.org/cfdev/cfanalytics"
1414
"code.cloudfoundry.org/cfdev/cfanalytics/toggle"
1515
"code.cloudfoundry.org/cfdev/resource"
16+
"code.cloudfoundry.org/cfdev/semver"
1617
analytics "gopkg.in/segmentio/analytics-go.v3"
1718
)
1819

@@ -49,6 +50,7 @@ var (
4950
cfdevdMd5 string
5051
cfdevdSize string
5152

53+
cliVersion string
5254
analyticsKey string
5355
)
5456

@@ -75,6 +77,7 @@ type Config struct {
7577
Dependencies resource.Catalog
7678
CFDevDSocketPath string
7779
CFDevDInstallationPath string
80+
CliVersion *semver.Version
7881
Analytics Analytics
7982
AnalyticsToggle Toggle
8083
}
@@ -107,7 +110,8 @@ func NewConfig() (Config, error) {
107110
Dependencies: catalog,
108111
CFDevDSocketPath: filepath.Join("/var", "tmp", "cfdevd.socket"),
109112
CFDevDInstallationPath: filepath.Join("/Library", "PrivilegedHelperTools", "org.cloudfoundry.cfdevd"),
110-
Analytics: cfanalytics.New(analyticsToggle, analyticsClient),
113+
CliVersion: semver.Must(semver.New(cliVersion)),
114+
Analytics: cfanalytics.New(analyticsToggle, analyticsClient, cliVersion),
111115
AnalyticsToggle: analyticsToggle,
112116
}, nil
113117
}

src/code.cloudfoundry.org/cfdev/generate-plugin.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ go build \
5959
-X $pkg.cfdevdMd5=$(md5 "$cfdevd" | awk '{ print $4 }')
6060
-X $pkg.cfdevdSize=$(wc -c < "$cfdevd" | tr -d '[:space:]')
6161
62+
-X $pkg.cliVersion=0.0.$(date +%Y%m%d-%H%M%S)
6263
-X $pkg.analyticsKey=WFz4dVFXZUxN2Y6MzfUHJNWtlgXuOYV2" \
6364
code.cloudfoundry.org/cfdev
6465

src/code.cloudfoundry.org/cfdev/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,13 @@ func main() {
5252
}
5353
defer conf.Close()
5454

55+
v := conf.CliVersion
5556
cfdev := &Plugin{
5657
Exit: exitChan,
5758
UI: ui,
5859
Config: conf,
5960
Root: cmd.NewRoot(exitChan, ui, conf),
60-
Version: plugin.VersionType{Major: 0, Minor: 0, Build: 2},
61+
Version: plugin.VersionType{Major: v.Major, Minor: v.Minor, Build: v.Build},
6162
}
6263

6364
plugin.Start(cfdev)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package semver
2+
3+
import (
4+
"strconv"
5+
"strings"
6+
)
7+
8+
type Version struct {
9+
Major int
10+
Minor int
11+
Build int
12+
Original string
13+
}
14+
15+
func New(v string) (*Version, error) {
16+
s := &Version{Original: v}
17+
arr := strings.SplitN(v, ".", 3)
18+
var err error
19+
if len(arr) >= 1 && v != "" {
20+
s.Major, err = strconv.Atoi(arr[0])
21+
if err != nil {
22+
return nil, err
23+
}
24+
}
25+
if len(arr) >= 2 {
26+
s.Minor, err = strconv.Atoi(arr[1])
27+
if err != nil {
28+
return nil, err
29+
}
30+
}
31+
if len(arr) >= 3 {
32+
parts := strings.SplitN(arr[2], "-", 2)
33+
s.Build, err = strconv.Atoi(parts[0])
34+
if err != nil {
35+
return nil, err
36+
}
37+
}
38+
return s, nil
39+
}
40+
41+
func Must(v *Version, err error) *Version {
42+
if err != nil {
43+
panic(err)
44+
}
45+
return v
46+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package semver_test
2+
3+
import (
4+
. "github.com/onsi/ginkgo"
5+
. "github.com/onsi/gomega"
6+
7+
"testing"
8+
)
9+
10+
func TestSemver(t *testing.T) {
11+
RegisterFailHandler(Fail)
12+
RunSpecs(t, "Semver Suite")
13+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package semver_test
2+
3+
import (
4+
"code.cloudfoundry.org/cfdev/semver"
5+
. "github.com/onsi/ginkgo"
6+
. "github.com/onsi/gomega"
7+
)
8+
9+
var _ = Describe("Semver", func() {
10+
It("parses 1.2.3", func() {
11+
s, err := semver.New("1.2.3")
12+
Expect(err).NotTo(HaveOccurred())
13+
Expect(s.Major).To(Equal(1))
14+
Expect(s.Minor).To(Equal(2))
15+
Expect(s.Build).To(Equal(3))
16+
Expect(s.Original).To(Equal("1.2.3"))
17+
})
18+
19+
It("parses 2.3.4-patch-1", func() {
20+
s, err := semver.New("2.3.4-patch-1")
21+
Expect(err).NotTo(HaveOccurred())
22+
Expect(s.Major).To(Equal(2))
23+
Expect(s.Minor).To(Equal(3))
24+
Expect(s.Build).To(Equal(4))
25+
Expect(s.Original).To(Equal("2.3.4-patch-1"))
26+
})
27+
28+
It("parses empty string", func() {
29+
s, err := semver.New("")
30+
Expect(err).NotTo(HaveOccurred())
31+
Expect(s.Major).To(Equal(0))
32+
Expect(s.Minor).To(Equal(0))
33+
Expect(s.Build).To(Equal(0))
34+
Expect(s.Original).To(Equal(""))
35+
})
36+
})

0 commit comments

Comments
 (0)