Skip to content

Commit 9c11a86

Browse files
committed
Change --version output
1 parent 3ce1153 commit 9c11a86

File tree

8 files changed

+114
-61
lines changed

8 files changed

+114
-61
lines changed

.goreleaser.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ builds:
3232
- amd64
3333
ldflags:
3434
- -s -w
35-
- -X github.com/arduino/arduino-lint/configuration.version={{.Tag}}
36-
- -X github.com/arduino/arduino-lint/configuration.commit={{ .ShortCommit }}
37-
- -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.Date}}
35+
- -X github.com/arduino/arduino-lint/version.version={{.Tag}}
36+
- -X github.com/arduino/arduino-lint/version.commit={{ .ShortCommit }}
37+
- -X github.com/arduino/arduino-lint/version.date={{.Date}}
3838
- # ARM
3939
id: arduino_lint_arm
4040
binary: arduino-lint
@@ -49,9 +49,9 @@ builds:
4949
- 6
5050
ldflags:
5151
- -s -w
52-
- -X github.com/arduino/arduino-lint/configuration.version={{.Tag}}
53-
- -X github.com/arduino/arduino-lint/configuration.commit={{ .ShortCommit }}
54-
- -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.Date}}
52+
- -X github.com/arduino/arduino-lint/version.version={{.Tag}}
53+
- -X github.com/arduino/arduino-lint/version.commit={{ .ShortCommit }}
54+
- -X github.com/arduino/arduino-lint/version.date={{.Date}}
5555
- "-extldflags '-static'"
5656
- # ARMv7
5757
id: arduino_lint_armv7
@@ -67,9 +67,9 @@ builds:
6767
- 7
6868
ldflags:
6969
- -s -w
70-
- -X github.com/arduino/arduino-lint/configuration.version={{.Tag}}
71-
- -X github.com/arduino/arduino-lint/configuration.commit={{ .ShortCommit }}
72-
- -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.Date}}
70+
- -X github.com/arduino/arduino-lint/version.version={{.Tag}}
71+
- -X github.com/arduino/arduino-lint/version.commit={{ .ShortCommit }}
72+
- -X github.com/arduino/arduino-lint/version.date={{.Date}}
7373
- "-extldflags '-static'"
7474
- # ARM64
7575
id: arduino_lint_arm64
@@ -83,9 +83,9 @@ builds:
8383
- arm64
8484
ldflags:
8585
- -s -w
86-
- -X github.com/arduino/arduino-lint/configuration.version={{.Tag}}
87-
- -X github.com/arduino/arduino-lint/configuration.commit={{ .ShortCommit }}
88-
- -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.Date}}
86+
- -X github.com/arduino/arduino-lint/version.version={{.Tag}}
87+
- -X github.com/arduino/arduino-lint/version.commit={{ .ShortCommit }}
88+
- -X github.com/arduino/arduino-lint/version.date={{.Date}}
8989
- "-extldflags '-static'"
9090
- # All the other platforms
9191
id: arduino_lint
@@ -100,9 +100,9 @@ builds:
100100
- 386
101101
ldflags:
102102
- -s -w
103-
- -X github.com/arduino/arduino-lint/configuration.version={{.Tag}}
104-
- -X github.com/arduino/arduino-lint/configuration.commit={{ .ShortCommit }}
105-
- -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.Date}}
103+
- -X github.com/arduino/arduino-lint/version.version={{.Tag}}
104+
- -X github.com/arduino/arduino-lint/version.commit={{ .ShortCommit }}
105+
- -X github.com/arduino/arduino-lint/version.date={{.Date}}
106106
- "-extldflags '-static'"
107107

108108
archives:

Taskfile.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ tasks:
2626
go:test-unit:
2727
desc: Run unit tests
2828
cmds:
29-
- go test -short -run '{{ default ".*" .TEST_REGEX }}' {{ default "-v" .GOFLAGS }} -coverprofile=coverage_unit.txt {{ default .DEFAULT_PACKAGES .PACKAGES }}
29+
- go test -short -run '{{ default ".*" .TEST_REGEX }}' {{ default "-v" .GOFLAGS }} -coverprofile=coverage_unit.txt {{ default .DEFAULT_PACKAGES .PACKAGES }} {{ .TEST_LDFLAGS }}
3030

3131
test-integration:
3232
desc: Run integration tests
@@ -224,9 +224,14 @@ vars:
224224
TIMESTAMP:
225225
sh: echo "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
226226
LDFLAGS: >
227-
-ldflags '-X github.com/arduino/arduino-lint/configuration.commit={{.COMMIT}} -X github.com/arduino/arduino-lint/configuration.buildTimestamp={{.TIMESTAMP}}'
227+
-ldflags '-X github.com/arduino/arduino-lint/version.commit="{{.COMMIT}}" -X github.com/arduino/arduino-lint/version.date={{.TIMESTAMP}}'
228+
TEST_VERSION: "0.0.0-test.preview"
229+
TEST_COMMIT: "deadbeef"
230+
TEST_LDFLAGS: >
231+
-ldflags '-X github.com/arduino/arduino-lint/version.version={{.TEST_VERSION}}
232+
-X github.com/arduino/arduino-lint/version.commit={{.TEST_COMMIT}}
233+
-X github.com/arduino/arduino-lint/version.date={{.TIMESTAMP}}'
228234
GOFLAGS: "-timeout 10m -v -coverpkg=./... -covermode=atomic"
229-
230235
GOLINTFLAGS: "-min_confidence 0.8 -set_exit_status"
231236

232237
PRETTIER: prettier@2.1.2

command/command.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,9 @@ func ArduinoLint(rootCommand *cobra.Command, cliArguments []string) {
3939

4040
if configuration.VersionMode() {
4141
if configuration.OutputFormat() == outputformat.Text {
42-
fmt.Println(configuration.Version() + " " + configuration.BuildTimestamp())
42+
fmt.Println(configuration.VersionInfo())
4343
} else {
44-
versionObject := struct {
45-
Version string `json:"version"`
46-
BuildTimestamp string `json:"buildTimestamp"`
47-
}{
48-
Version: configuration.Version(),
49-
BuildTimestamp: configuration.BuildTimestamp(),
50-
}
51-
versionJSON, err := json.MarshalIndent(versionObject, "", " ")
44+
versionJSON, err := json.MarshalIndent(configuration.VersionInfo(), "", " ")
5245
if err != nil {
5346
panic(err)
5447
}

configuration/configuration.go

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ import (
2020
"fmt"
2121
"io/ioutil"
2222
"os"
23+
"path/filepath"
2324
"strconv"
2425
"strings"
2526

2627
"github.com/arduino/arduino-lint/configuration/checkmode"
2728
"github.com/arduino/arduino-lint/project/projecttype"
2829
"github.com/arduino/arduino-lint/result/outputformat"
30+
"github.com/arduino/arduino-lint/version"
2931
"github.com/arduino/go-paths-helper"
3032
"github.com/sirupsen/logrus"
3133
"github.com/spf13/pflag"
@@ -199,21 +201,10 @@ func VersionMode() bool {
199201
return versionMode
200202
}
201203

202-
var version string
203-
var commit string
204+
var versionInfo = version.NewInfo(filepath.Base(os.Args[0]))
204205

205-
func Version() string {
206-
if version == "" {
207-
return "0.0.0+" + commit
208-
}
209-
210-
return version
211-
}
212-
213-
var buildTimestamp string
214-
215-
func BuildTimestamp() string {
216-
return buildTimestamp
206+
func VersionInfo() *version.Info {
207+
return versionInfo
217208
}
218209

219210
var targetPaths paths.PathList

configuration/configuration_test.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -235,15 +235,3 @@ func TestInitializeOfficial(t *testing.T) {
235235
os.Setenv("ARDUINO_LINT_OFFICIAL", "invalid value")
236236
assert.Error(t, Initialize(test.ConfigurationFlags(), projectPaths))
237237
}
238-
239-
func TestVersion(t *testing.T) {
240-
commit = "abcd"
241-
assert.Equal(t, "0.0.0+"+commit, Version())
242-
version = "42.1.2"
243-
assert.Equal(t, version, Version())
244-
}
245-
246-
func TestBuildTimestamp(t *testing.T) {
247-
buildTimestamp = "2020-11-27T04:05:19+00:00"
248-
assert.Equal(t, buildTimestamp, BuildTimestamp())
249-
}

test/test_all.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,6 @@ def test_verbose(run_command):
170170
assert True in [check.get("result") == "fail" for check in report["projects"][0]["checks"]]
171171

172172

173-
def test_version(run_command):
174-
result = run_command(cmd=["--version"])
175-
assert result.ok
176-
output_list = result.stdout.strip().split(sep=" ")
177-
assert semver.VersionInfo.isvalid(version=output_list[0])
178-
dateutil.parser.isoparse(output_list[1])
179-
180-
181173
def test_arduino_lint_official(run_command):
182174
project_path = test_data_path.joinpath("ARDUINO_LINT_OFFICIAL")
183175

version/version.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// This file is part of arduino-cli.
2+
//
3+
// Copyright 2020 ARDUINO SA (http://www.arduino.cc/)
4+
//
5+
// This software is released under the GNU General Public License version 3,
6+
// which covers the main part of arduino-cli.
7+
// The terms of this license can be found at:
8+
// https://www.gnu.org/licenses/gpl-3.0.en.html
9+
//
10+
// You can be released from the requirements of the above licenses by purchasing
11+
// a commercial license. Buying such a license is mandatory if you want to
12+
// modify or otherwise use the software for commercial activities involving the
13+
// Arduino software without disclosing the source code of your own applications.
14+
// To purchase a commercial license, send an email to license@arduino.cc.
15+
16+
package version
17+
18+
import (
19+
"fmt"
20+
)
21+
22+
var (
23+
defaultVersion = "0.0.0-git"
24+
version = ""
25+
commit = ""
26+
status = "alpha"
27+
date = ""
28+
)
29+
30+
// Info FIXMEDOC
31+
type Info struct {
32+
Application string `json:"Application"`
33+
Version string `json:"Version"`
34+
Commit string `json:"Commit"`
35+
Status string `json:"Status"`
36+
Date string `json:"Date"`
37+
}
38+
39+
// NewInfo FIXMEDOC
40+
func NewInfo(application string) *Info {
41+
return &Info{
42+
Application: application,
43+
Version: version,
44+
Commit: commit,
45+
Status: status,
46+
Date: date,
47+
}
48+
}
49+
50+
func (i *Info) String() string {
51+
return fmt.Sprintf("%s %s Version: %s Commit: %s Date: %s", i.Application, i.Status, i.Version, i.Commit, i.Date)
52+
}
53+
54+
//nolint:gochecknoinits
55+
func init() {
56+
if version == "" {
57+
version = defaultVersion
58+
}
59+
}

version/version_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package version
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
// TestBuildInjectedInfo tests the Info strings passed to the binary at build time
10+
// in order to have this test green launch your testing using the provided task (see /Taskfile.yml) or use:
11+
// go test -run TestBuildInjectedInfo -v ./... -ldflags '
12+
// -X github.com/arduino/arduino-lint/version.version=0.0.0-test.preview
13+
// -X github.com/arduino/arduino-lint/version.commit=deadbeef'
14+
func TestBuildInjectedInfo(t *testing.T) {
15+
goldenAppName := "arduino-lint"
16+
goldenInfo := Info{
17+
Application: goldenAppName,
18+
Version: "0.0.0-test.preview",
19+
Commit: "deadbeef",
20+
}
21+
info := NewInfo(goldenAppName)
22+
require.Equal(t, goldenInfo.Application, info.Application)
23+
require.Equal(t, goldenInfo.Version, info.Version)
24+
require.Equal(t, goldenInfo.Commit, info.Commit)
25+
}

0 commit comments

Comments
 (0)