feat(cli): version flag (#60)

* feat(cli): version flag

Adds a --version flag to jb. Only available on go versions greater than 1.12

* style: add license headers

* chore(ci): generate only on latest go

* fix: unique step names

* doc: include version in README help text

* fix: rebuild .drone.yml using drone.cli

* fix: remove race condidion from CI
This commit is contained in:
sh0rez 2019-12-14 16:40:30 +01:00 committed by GitHub
parent d7829f6c7e
commit 376432fadd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 163 additions and 163 deletions

View file

@ -1,13 +1,12 @@
[ {
{
kind: 'pipeline', kind: 'pipeline',
name: 'go%s' % version, name: 'default',
platform: { platform: {
os: 'linux', os: 'linux',
arch: 'amd64', arch: 'amd64',
}, },
local golang = { local golang(version='latest') = {
name: 'golang', name: 'golang',
image: 'golang:%s' % version, image: 'golang:%s' % version,
pull: 'always', pull: 'always',
@ -22,8 +21,18 @@
}, },
}, },
local build(version) = golang(version) {
name: 'build-%s' % version,
commands: [
'make build',
'make test',
'make test-integration',
],
depends_on: ["gomod"]
},
steps: [ steps: [
golang { golang() {
name: 'gomod', name: 'gomod',
commands: [ commands: [
'go mod vendor', 'go mod vendor',
@ -31,24 +40,18 @@
], ],
}, },
golang { build('1.11'),
name: 'build', build('1.12'),
commands: [ build('1.13') + {depends_on: ["build-1.11", "build-1.12"]},
'make build',
'make test',
'make test-integration',
],
},
golang { golang() {
name: 'generate', name: 'generate',
commands: [ commands: [
'make check-license', 'make check-license',
'make generate', 'make generate',
'git diff --exit-code', 'git diff --exit-code',
], ],
depends_on: ["build-1.13"]
}, },
], ],
} }
for version in ['1.13', '1.12', '1.11']
]

View file

@ -1,6 +1,6 @@
--- ---
kind: pipeline kind: pipeline
name: go1.13 name: default
platform: platform:
os: linux os: linux
@ -9,7 +9,7 @@ platform:
steps: steps:
- name: gomod - name: gomod
pull: always pull: always
image: golang:1.13 image: golang:latest
commands: commands:
- go mod vendor - go mod vendor
- git diff --exit-code - git diff --exit-code
@ -21,113 +21,7 @@ steps:
exclude: exclude:
- tag - tag
- name: build - name: build-1.11
pull: always
image: golang:1.13
commands:
- make build
- make test
- make test-integration
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
- name: generate
pull: always
image: golang:1.13
commands:
- make check-license
- make generate
- git diff --exit-code
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
---
kind: pipeline
name: go1.12
platform:
os: linux
arch: amd64
steps:
- name: gomod
pull: always
image: golang:1.12
commands:
- go mod vendor
- git diff --exit-code
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
- name: build
pull: always
image: golang:1.12
commands:
- make build
- make test
- make test-integration
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
- name: generate
pull: always
image: golang:1.12
commands:
- make check-license
- make generate
- git diff --exit-code
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
---
kind: pipeline
name: go1.11
platform:
os: linux
arch: amd64
steps:
- name: gomod
pull: always
image: golang:1.11
commands:
- go mod vendor
- git diff --exit-code
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
- name: build
pull: always pull: always
image: golang:1.11 image: golang:1.11
commands: commands:
@ -141,10 +35,47 @@ steps:
event: event:
exclude: exclude:
- tag - tag
depends_on:
- gomod
- name: build-1.12
pull: always
image: golang:1.12
commands:
- make build
- make test
- make test-integration
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
depends_on:
- gomod
- name: build-1.13
pull: always
image: golang:1.13
commands:
- make build
- make test
- make test-integration
environment:
CGO_ENABLED: 0
GO111MODULE: on
when:
event:
exclude:
- tag
depends_on:
- build-1.11
- build-1.12
- name: generate - name: generate
pull: always pull: always
image: golang:1.11 image: golang:latest
commands: commands:
- make check-license - make check-license
- make generate - make generate
@ -156,5 +87,7 @@ steps:
event: event:
exclude: exclude:
- tag - tag
depends_on:
- build-1.13
... ...

View file

@ -87,7 +87,9 @@ usage: jb [<flags>] <command> [<args> ...]
A jsonnet package manager A jsonnet package manager
Flags: Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man). -h, --help Show context-sensitive help (also try --help-long and
--help-man).
--version Show application version.
--jsonnetpkg-home="vendor" --jsonnetpkg-home="vendor"
The directory used to cache packages in. The directory used to cache packages in.

View file

@ -23,7 +23,6 @@ import (
"github.com/fatih/color" "github.com/fatih/color"
"github.com/pkg/errors" "github.com/pkg/errors"
kingpin "gopkg.in/alecthomas/kingpin.v2"
"github.com/jsonnet-bundler/jsonnet-bundler/spec" "github.com/jsonnet-bundler/jsonnet-bundler/spec"
) )
@ -57,7 +56,7 @@ func Main() int {
color.Output = color.Error color.Output = color.Error
a := kingpin.New(filepath.Base(os.Args[0]), "A jsonnet package manager") a := newApp()
a.HelpFlag.Short('h') a.HelpFlag.Short('h')
a.Flag("jsonnetpkg-home", "The directory used to cache packages in."). a.Flag("jsonnetpkg-home", "The directory used to cache packages in.").

34
cmd/jb/version.go Normal file
View file

@ -0,0 +1,34 @@
// Copyright 2018 jsonnet-bundler authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build go1.12
package main
import (
"os"
"path/filepath"
"runtime/debug"
kingpin "gopkg.in/alecthomas/kingpin.v2"
)
func newApp() *kingpin.Application {
a := kingpin.New(filepath.Base(os.Args[0]), "A jsonnet package manager")
d, ok := debug.ReadBuildInfo()
if ok {
return a.Version(d.Main.Version)
}
return a
}

29
cmd/jb/version111.go Normal file
View file

@ -0,0 +1,29 @@
// Copyright 2018 jsonnet-bundler authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build !go1.12
package main
import (
"os"
"path/filepath"
kingpin "gopkg.in/alecthomas/kingpin.v2"
)
func newApp() *kingpin.Application {
a := kingpin.New(filepath.Base(os.Args[0]), "A jsonnet package manager")
return a
}