Skip to content
This repository has been archived by the owner on Jun 27, 2023. It is now read-only.

Commit

Permalink
Add Mockgen Version Flag (#362)
Browse files Browse the repository at this point in the history
Add -version flag that shows a version provided by Go modules.

This strategy works well for module aware invocations of `go get` and `go
run` (which means using GO111MODULE=on).

If we ever plan to distribute built binaries, it is necessary to amend
the strategy with build flags.

GOPATH mode versioning is unsupported.
  • Loading branch information
minicuts authored and codyoss committed Jan 20, 2020
1 parent e00cb15 commit f165686
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 4 deletions.
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@ contexts too.
Installation
------------

Once you have [installed Go][golang-install], install the `mockgen` tool:
Once you have [installed Go][golang-install], install the `mockgen` tool.

To get the latest released version use:

```bash
go get github.com/golang/mock/mockgen
GO111MODULE=on go get github.com/golang/mock/mockgen@latest
```

_Note: It is recommended to have `GO111MODULE=on` to ensure the correct
dependencies are used._
If you use `mockgen` in your CI pipeline, it may be more appropriate to fixate
on a specific mockgen version.


Documentation
-------------
Expand Down
6 changes: 6 additions & 0 deletions mockgen/mockgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,18 @@ var (
copyrightFile = flag.String("copyright_file", "", "Copyright file used to add copyright header")

debugParser = flag.Bool("debug_parser", false, "Print out parser results only.")
version = flag.Bool("version", false, "Print version.")
)

func main() {
flag.Usage = usage
flag.Parse()

if *version {
printVersion()
return
}

var pkg *model.Package
var err error
if *source != "" {
Expand Down
26 changes: 26 additions & 0 deletions mockgen/version.1.11.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright 2019 Google LLC
//
// 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 (
"log"
)

func printVersion() {
log.Printf("No version information is available for Mockgen compiled with " +
"version 1.11")
}
35 changes: 35 additions & 0 deletions mockgen/version.1.12.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright 2019 Google LLC
//
// 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 (
"fmt"
"log"
"runtime/debug"
)

func printVersion() {
if bi, exists := debug.ReadBuildInfo(); exists {
fmt.Println(bi.Main.Version)
} else {
log.Printf("No version information found. Make sure to use " +
"GO111MODULE=on when running 'go get' in order to use specific " +
"version of the binary.")
}

}

0 comments on commit f165686

Please sign in to comment.