github.com/rpdict/ponzu@v0.10.1-0.20190226054626-477f29d6bf5e/cmd/ponzu/version.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io/ioutil"
     7  	"os"
     8  	"path/filepath"
     9  
    10  	"github.com/spf13/cobra"
    11  )
    12  
    13  var versionCmd = &cobra.Command{
    14  	Use:     "version",
    15  	Aliases: []string{"v"},
    16  	Short:   "Prints the version of Ponzu your project is using.",
    17  	Long: `Prints the version of Ponzu your project is using. Must be called from
    18  within a Ponzu project directory.`,
    19  	Example: `$ ponzu version
    20  > Ponzu v0.8.2
    21  (or)
    22  $ ponzu version --cli
    23  > Ponzu v0.9.2`,
    24  	Run: func(cmd *cobra.Command, args []string) {
    25  		p, err := version(cli)
    26  		if err != nil {
    27  			fmt.Println(err)
    28  			os.Exit(1)
    29  		}
    30  
    31  		fmt.Fprintf(os.Stdout, "Ponzu v%s\n", p["version"])
    32  	},
    33  }
    34  
    35  func version(isCLI bool) (map[string]interface{}, error) {
    36  	kv := make(map[string]interface{})
    37  
    38  	info := filepath.Join("cmd", "ponzu", "ponzu.json")
    39  	if isCLI {
    40  		gopath, err := getGOPATH()
    41  		if err != nil {
    42  			return nil, err
    43  		}
    44  		repo := filepath.Join(gopath, "src", "github.com", "rpdict", "ponzu")
    45  		info = filepath.Join(repo, "cmd", "ponzu", "ponzu.json")
    46  	}
    47  
    48  	b, err := ioutil.ReadFile(info)
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	err = json.Unmarshal(b, &kv)
    54  	if err != nil {
    55  		return nil, err
    56  	}
    57  
    58  	return kv, nil
    59  }
    60  
    61  func init() {
    62  	versionCmd.Flags().BoolVar(&cli, "cli", false, "specify that information should be returned about the CLI, not project")
    63  	RegisterCmdlineCommand(versionCmd)
    64  }