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',
name: 'go%s' % version,
name: 'default',
platform: {
os: 'linux',
arch: 'amd64',
},
local golang = {
local golang(version='latest') = {
name: 'golang',
image: 'golang:%s' % version,
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: [
golang {
golang() {
name: 'gomod',
commands: [
'go mod vendor',
@ -31,24 +40,18 @@
],
},
golang {
name: 'build',
commands: [
'make build',
'make test',
'make test-integration',
],
},
build('1.11'),
build('1.12'),
build('1.13') + {depends_on: ["build-1.11", "build-1.12"]},
golang {
golang() {
name: 'generate',
commands: [
'make check-license',
'make generate',
'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
name: go1.13
name: default
platform:
os: linux
@ -9,7 +9,7 @@ platform:
steps:
- name: gomod
pull: always
image: golang:1.13
image: golang:latest
commands:
- go mod vendor
- git diff --exit-code
@ -21,113 +21,7 @@ steps:
exclude:
- tag
- name: build
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
- name: build-1.11
pull: always
image: golang:1.11
commands:
@ -141,10 +35,47 @@ steps:
event:
exclude:
- 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
pull: always
image: golang:1.11
image: golang:latest
commands:
- make check-license
- make generate
@ -156,5 +87,7 @@ steps:
event:
exclude:
- tag
depends_on:
- build-1.13
...

View file

@ -87,7 +87,9 @@ usage: jb [<flags>] <command> [<args> ...]
A jsonnet package manager
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"
The directory used to cache packages in.

View file

@ -23,7 +23,6 @@ import (
"github.com/fatih/color"
"github.com/pkg/errors"
kingpin "gopkg.in/alecthomas/kingpin.v2"
"github.com/jsonnet-bundler/jsonnet-bundler/spec"
)
@ -57,7 +56,7 @@ func Main() int {
color.Output = color.Error
a := kingpin.New(filepath.Base(os.Args[0]), "A jsonnet package manager")
a := newApp()
a.HelpFlag.Short('h')
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
}